type(instance .__ dict__)是'int'吗?

时间:2014-11-25 23:49:13

标签: python

所以我有这段代码:

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类型。

有人可以解释这种行为吗?

1 个答案:

答案 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