標籤:列印 instance 形式 style delattr rom import bsp def
一.
isinstance(檢查第一個參數是否是第二個參數的 子子孫孫類)
class Base(object): pass class Foo(Base): pass obj1 = Foo() print(isinstance(obj1,Foo))
print(isinstance(obj1,Base))
issubclass(檢查的一個參數(對象) 是否是第二個參數(類及父類)的執行個體)
class Base(object): passclass Foo(Base): passclass Bar(Foo): passprint(issubclass(Bar, Base))
type(擷取當前對象是由那個類建立.)
class Foo(object): passobj = Foo()print(obj,type(obj)) # 擷取當前對象是由那個類建立。if type(obj) == Foo: print(‘obj是Foo類型‘)
二.方法和函數
稱謂:
類. 就是方法
外面的, 就是函數
對象.dag 就是方法
類.aaa 就是函數
xxx 也是函數
列印查看:
function
method
from types import MethodType,FunctionTypedef check(arg): if isinstance(arg,MethodType): print(‘arg是方法‘) elif isinstance(arg,FunctionType): #檢查arg是方法還是函數 print(‘arg是個函數‘) else: print(‘不知道是什麼‘)
三.反射
getattr # 根據字串的形式,去對象中找成員。
hasattr # 根據字串的形式,去判斷對象中是否有成員。setattr # 根據字串的形式,動態設定一個成員(記憶體)delattr # 根據字串的形式,動態刪除一個成員(記憶體)
總結:
v = getattr(obj,‘func‘) 根據字串為參數(第二個參數),去對象(第一個參數)中尋找與之同名的成員。
拓展:見過的啥後面加() ?
類()
對象()
函數()
方法()
以上都可以被調用
樣本
def func(): pass
class Foo(object): def __call__(self, *args, **kwargs): pass def func(self): pass
obj = Foo() print(callable(func)) print(callable(Foo)) print(callable(obj)) print(callable(obj.func))
python 物件導向之路 方法和函數 反射