为什么测试`__dict__`的成员身份不好?

时间:2016-01-06 23:04:11

标签: python python-3.x

我问过question关于取消对象的__dict__成员资格测试的问题。提供了一个解决方案,但使用if x in __dict__时,它的优雅程度稍低。

正如我在该帖子中提到的,我宁愿使用hasattr,但却导致了RecursionError

会员资格测试有什么问题?

1 个答案:

答案 0 :(得分:2)

我不完全确定我理解您的其他帖子,但请注意__dict__仅包含实例的属性 - 而不是类。 e.g。

>>> class Foo(object):
...   x = 1
... 
>>> Foo().__dict__
{}

但是,hasattr来电会告诉您Foo的实例确实具有x属性:

>>> hasattr(Foo(), 'x')
True

所以,无论如何,我们可以看到这两个成语具有不同的含义 - 即使在某些相当常见的情况下也是如此。