我问过question关于取消对象的__dict__
成员资格测试的问题。提供了一个解决方案,但使用if x in __dict__
时,它的优雅程度稍低。
正如我在该帖子中提到的,我宁愿使用hasattr
,但却导致了RecursionError
。
会员资格测试有什么问题?
答案 0 :(得分:2)
我不完全确定我理解您的其他帖子,但请注意__dict__
仅包含实例的属性 - 而不是类。 e.g。
>>> class Foo(object):
... x = 1
...
>>> Foo().__dict__
{}
但是,hasattr
来电会告诉您Foo
的实例确实具有x
属性:
>>> hasattr(Foo(), 'x')
True
所以,无论如何,我们可以看到这两个成语具有不同的含义 - 即使在某些相当常见的情况下也是如此。