擅长:python、mysql、java
<pre><code>a.value = a.explicit_value_update(2)
</code></pre>
<p>在我看来很奇怪。在</p>
<p>您的<code>..._update</code>方法都没有<code>self</code>参数,因此无法正常工作。<code>explicit_value_update</code>不使用任何属性,因此应该是<code>@staticmethod</code>。在</p>
^{pr2}$
<p>这使得它的功能与类相关,但不需要访问类或实例属性。在</p>
<p>但我认为最好的办法是使用房产:</p>
<pre><code>class A(object):
def __init__(self):
self.value = 0
@property
def value(self):
return self._value
@value.setter
def value(self, other_value):
self._value = 2 * other_value
if __name__ == '__main__':
a = A()
a.value = 2
print a.value # 4
</code></pre>
<p>注意,现在没有样板文件了—您只需直接指定给属性,<code>setter</code>会为您处理它。Python中的传统做法是<strong>不</strong>从修改对象的方法返回对象。在</p>