1. 程式人生 > >isinstance,issubclass和__getattrribute__

isinstance,issubclass和__getattrribute__

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 raise
AttributeError(拋出異常) #這樣子拋異常會執行上一行的操作 37 38 39 f1 = Foo(x) 40 f1.x 41 ## 這裏是__getattrribute__ 42 ## 這裏是__getattr__ 43 f1.name 44 ## 這裏是__getattrribute__ 45 ## 這裏是__getattr__

isinstance,issubclass和__getattrribute__