【发布时间】:2017-12-17 13:29:33
【问题描述】:
第一个演示:
class B:
def __init__(self):
self.name = '234'
# def __getattribute__(self, name):
# print('getattr')
def __getattr__(self, name):
print('get')
def __setattr__(self, name, value):
print('set')
def __delattr__(self, name):
print('del')
b = B()
print(b.__dict__)
b.name
b.__dict__ 是{},但第二个演示:
class B:
def __init__(self):
self.name = '234'
def __getattribute__(self, name):
print('getattr')
def __getattr__(self, name):
print('get')
def __setattr__(self, name, value):
print('set')
def __delattr__(self, name):
print('del')
b = B()
print(b.__dict__)
b.name
b.__dict__ 是None,为什么?而b.__dict__调用__getattribute__,但不调用__getattr__,是不是意味着__getattribute__会阻止调用__getattr__?
【问题讨论】:
标签: python python-3.x attributes operator-overloading overriding