标签:name foo style rri def 操作 nbsp 判断 IV
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__
标签:name foo style rri def 操作 nbsp 判断 IV
原文地址:https://www.cnblogs.com/humanskin/p/9147669.html