python 3-クラスとオブジェクト-クラスで定義された関数-バインドメソッド、非バインドメソッド

1612 ワード

目次
クラスで定義された関数
一、バインド方法(クラス方法)
1-1クラスをバインドする方法(クラスメソッド)
1-2バインドオブジェクト(クラス内の一般的なメソッド)
二、非バインド方法(静的方法)
クラスで定義された関数
'''
   、      、    :        
         ,          ,        ,          。
              ,          self      ,          cls      。
''' 

一、バインド方法(クラス方法)
1-1クラスをバインドする方法(クラスメソッド)
'''
   :@classmethod
                 ,    ( 、  )     
    
class Test:
    @classmethod
    def test(cls): #      ,      cls         
        pass
'''
class Test2:

    @classmethod
    def f2(cls):
        print(cls)

t.f2()
Test2.f2()


1-2バインドオブジェクト(クラス内の一般的なメソッド)
class Test2:

    def f1(self):
        print('f1')

t = Test2()
t.f1()



二、非バインド方法(静的方法)
'''
    :@staticmethod
               ,       。      、  
    
class Test:
    @staticmethod
    def test(): #    :  .   
        pass
'''
class Test2:

    @staticmethod
    def f3():
        print('f3')

t.f3()
Test2.f3()
import settings


class MySql:
    def __init__(self, ip, port):
        self.id = self.create_id()
        self.ip = ip
        self.port = port

    def tell_info(self):
        print(self.id, self.ip, self.port)

    @classmethod
    def from_conf(cls):
        #      ,      
        return cls(settings.IP, settings.PORT)

    @staticmethod
    def create_id():
        import uuid
        # uuid           
        return uuid.uuid4()


obj = MySql.from_conf()
obj.tell_info()