所以我有这段代码:
class a(object):
def __init__(self):
self.y = 100
class b(object):
def __init__(self):
self.x = 100
def __getattribute__(self, name):
return super(b, self).__getattribute__('x')
如果我跑:
>>> instance_a = a()
>>> print instance_a.__dict__
我明白了:
{'y': 100}
但如果我跑:
>>> instance_b = b()
>>> print instance_b.__dict__
然后我得到:
100
(我期望类似:{'x':100}
)
因此,某些原因type(instance_a.__dict__)
是dict
,而type(instance_b.__dict__)
是int
。我希望它们都是dict
类型。
有人可以解释这种行为吗?
答案 0 :(得分:1)
如果您运行以下内容:
print instance_a.__getattribute__('y')
你会得到
100
这基本上就是你在做什么。您已将__getattribute__
重写为始终返回x
。
请注意以下行为:
>>> instance_a.__foo__
Traceback (most recent call last):
File "<input>", line 1, in <module>
AttributeError: 'a' object has no attribute '__foo__'
可是:
>>> instance_b.__foo__
100