isinstance(obj, cls) : 判断对象obj是否为一个类cls实例化出来的对象,能反映继承关系,即B继承A, B实例化出来的对象b, isinstance(b, A) 为 True
type() : 判断实例化出来的对象obj所属的类
issubclass(cls1, cls2) : 判断类cls1是否为类cls2的子类
raise XXX : 如 用来发出异常信号给屏幕, 比如 raise AttributeError(‘异常‘)
__getattribute__ : __getattr__的大哥,不管通过实例对象是否调用到某个方法或属性,都会先触发__getattribute__
然后默认的__getattribute__里会raise AttributeError ,这个操作会通知__getattr__执行
其实内置的__getattribute__大体就做了这么两件事:
1、如果实例对象能调用到某个方法或属性,则使得实例获取到这个方法或属性
2、如果调用不到则raise AttributeError ,然后这个操作会呼唤小弟__getattr__执行
(注意这个AttributeError被小弟接住了,不会程序中断;但是默认的__getattr__小弟自己的逻辑还会raise一个AttributeError)
如下我们自己定义一个__getattribute__,模拟这个过程
class A: def __init__(self, x): self.x = x def __getattr__(self, item): print(‘执行getattr‘) def __getattribute__(self, item): print(‘执行getattribute‘) raise AttributeError(‘交给我小弟getattr去做‘) a = A(1) a.xx
原文:https://www.cnblogs.com/Matrixssy/p/11640486.html