from types import FunctionType, MethodType class Car(object): def __init__(self): pass def run(self): print("my car can run!") @staticmethod def fly(self): print("my car can fly!") @classmethod def jumk(cls): print("my car can jumk!") c = Car() # type(obj) 表示查看obj是由哪一個類建立的. # 實例方法 print(type(c.run)) # <class 'method'> print(type(Car.run)) # <class 'function'> # 靜態方法 print(type(c.fly)) # <class 'function'> print(type(Car.fly)) # <class 'function'> # 類方法,由於類在內存中也是對象,因此調用類方法都是方法類型 print(type(c.jumk)) # <class 'method'> print(type(Car.jumk)) # <class 'method'> # 使用FunctionType, MethodType 來判斷類型 # 實例方法 print(isinstance(c.run,MethodType)) # True print(isinstance(Car.run,FunctionType)) # True # 靜態方法 print(isinstance(c.fly,FunctionType)) # True print(isinstance(Car.fly,FunctionType)) # True # 類方法 print(isinstance(c.jumk,MethodType)) # True print(isinstance(Car.jumk,MethodType)) # True """結論 1. 類⽅法.不論任何狀況,都是⽅法. 2. 靜態方法,不論任何狀況.都是函數 3. 實例方法,若是是實例訪問.就是⽅法.若是是類名訪問就是函數. """