【发布时间】:2015-07-24 09:40:28
【问题描述】:
class Avatar:
def __init__(self, HP=100, damage=10, defends=10, magic=5):
self.__hp = HP
self.__dam = damage
self.__def = defends
self.__mag = magic
def check_hasattr(self):
print hasattr(Avatar,'__hp')
warrior = Avatar(99,9,9,4)
Avatar.check_hasattr(warrior)
有人知道为什么print 语句返回False 而我期望True?
【问题讨论】:
-
如果我删除下划线,它仍然返回 False
-
应该是
hasattr(self, ...)- 然后'_Avatar__hp'或'hp'(取决于您如何设置实例)工作正常。另外,为什么使用Avatar.check_hasattr(warrior)而不是warrior.check_hasattr()?