__getattr__
- プロパティへのアクセスは__getattr__をトリガ、存在しません。
class Foo:
def __init__(self, x):
self.x = x
def __getattr__(self, item):
print('执行的是我')
# return self.__dict__[item]
f1 = Foo(10)
print(f1.x)
10
f1.xxxxxx
执行的是我
__getattribute__
- かかわらず、そこに実行するかどうかのプロパティを探します
class Foo:
def __init__(self, x):
self.x = x
def __getattribute__(self, item):
print('不管是否存在,我都会执行')
f1 = Foo(10)
f1.x
不管是否存在,我都会执行
f1.xxxxxx
不管是否存在,我都会执行
__getattr__与__getattribute__
- __getattribute__と__getattr__が存在する場合には例外が実行はAttributeError中にスローされない限り、それだけで__getattrbute__、__getattribute__を実行します
#_*_coding:utf-8_*_
__author__ = 'Linhaifeng'
class Foo:
def __init__(self, x):
self.x = x
def __getattr__(self, item):
print('执行的是我')
# return self.__dict__[item]
def __getattribute__(self, item):
print('不管是否存在,我都会执行')
raise AttributeError('哈哈')
f1 = Foo(10)
f1.x
不管是否存在,我都会执行
执行的是我
f1.xxxxxx
不管是否存在,我都会执行
执行的是我