擅长:python、mysql、java
<p>我喜欢实现一个<code>copy</code>方法来创建对象的相同实例。然后我可以随意修改新实例的值。</p>
<pre><code>class Vector:
def __init__(self, x, y):
self.x, self.y = x, y
def copy(self):
"""
create a new instance of Vector,
with the same data as this instance.
"""
return Vector(self.x, self.y)
def normalized(self):
"""
return a new instance of Vector,
with the same angle as this instance,
but with length 1.
"""
ret = self.copy()
ret.x /= self.magnitude()
ret.y /= self.magnitude()
return ret
def magnitude(self):
return math.hypot(self.x, self.y)
</code></pre>
<p>因此,在您的例子中,您可以定义一种方法,例如:</p>
<pre><code>def complemented(self):
ret = self.copy()
ret.__invert__()
return ret
</code></pre>