isinstance issubclass 与系统内置属性 __getattribute__

# isinstance issubclass 与系统内置属性 __getattribute__
# isinstance(obj, cls)检查obj是否是类cls的实例

class Foo:
    pass


obj = Foo()
print(isinstance(obj, Foo))  # True 判断obj是否是Foo类的实例

mystr = 'hello world'
print(isinstance(mystr, str))  # True  判断字符串是否是str这个类的实例


# issubclass(sub, super) 检查sub类是否是super类的子类
class A:
    pass


class B(A):
    pass

b1 = B()
print(issubclass(B, A))  # True 判断B是否是A的子类
print(isinstance(b1, A))  # True 判断b1是否是A的实例

# __getattribute__
class Foo1:
    def __init__(self, x):
        self.x = x

    def __getattr__(self, item):
        print('属性不存在时执行的是我')
        # return self.__dict__[item]

    def __getattribute__(self, item):   # 不管属性是否存在,都要执行此方法
        print('不管属性是否存在,都要执行我')
        raise AttributeError('抛出AttributeError异常')  # __getattr__会监听__getattribute__抛出的AttributeError异常,一但发现此异常就会执行__getattr__中的代码

        # 当__getattribute__与__getattr__同时存在时,只会执行__getattribute__,除非__getattribute__在执行过程中抛出AttributeError异常

猜你喜欢

转载自www.cnblogs.com/dangrui0725/p/9465657.html