擅长:python、mysql、java
<p>您的代码无法工作,因为您正在检查类<code>Avatar</code>是否具有属性<code>__hp</code>,但它没有该属性,只有实例具有该属性,因为该属性是在<code>__init__</code>中定义的。换句话说,<code>hasattr</code>应该在<code>self</code>或<code>avatar</code>对象上调用,而不是在<code>Avatar</code>类上调用。在</p>
<p>此外,双下划线在python中有一个特殊的含义,它会损坏名称,因此在不能直接访问的意义上是“private”。这意味着检查实例是否具有属性<code>__hp</code>将不起作用(应该改为检查<code>_Avatar__hp</code>)</p>
<p>我更改了您的代码,以简化和删除不太合理的内容:</p>
<pre><code>class Avatar:
def __init__(self,HP=100):
self._hp = HP
>>> avatar = Avatar()
>>> hasattr(avatar, '_hp')
True
</code></pre>
<p>注意:如果您创建Avatar <code>avatar = Avatar()</code>的实例,您应该直接调用对象<code>avatar.mymethod()</code>上的方法,而不是{<cd12>}</p>