isinstance,issubclass和__getattrribute__
阿新 • • 發佈:2018-06-07
int sta sin per 派生類 err code __init__ ttr
1 class Foo: 2 pass 3 class Boo(Foo): 4 pass 5 6 f1 = Foo() 7 f2 = Boo() 8 # isinstance(obj,cls)檢查是否obj是否是類 cls 的對象 isinstance()判斷實例化的對象是否屬於後面的類 9 print(isinstance(f1,Foo)) #True 10 print(isinstance(f2,Foo)) #True 11 # issubclass(sub, super)檢查sub類是否是 super 類的派生類(子類)12 print(issubclass(Boo,Foo)) 13 14 # getattribute 15 class Foo: 16 def __init__(self,x): 17 self.x = x 18 19 def __getattr__(self, item): 20 print(‘這裏是__getattr__‘) 21 def __getattribute__(self, item): 22 print(‘這裏是__getattrribute__‘) 23 24 f1 = Foo(‘x‘) 25 f1.x #這裏是__getattrribute__ 26 f1.name #這裏是__getattrribute__ 27 28 class Foo: 29 def __init__(self,x): 30 self.x = x 31 32 def __getattr__(self, item): 33 print(‘這裏是__getattr__‘) 34 def __getattribute__(self, item): 35 print(‘這裏是__getattrribute__‘) 36 raiseAttributeError(‘拋出異常‘) #這樣子拋異常會執行上一行的操作 37 38 39 f1 = Foo(‘x‘) 40 f1.x 41 ## 這裏是__getattrribute__ 42 ## 這裏是__getattr__ 43 f1.name 44 ## 這裏是__getattrribute__ 45 ## 這裏是__getattr__
isinstance,issubclass和__getattrribute__