擅长:python、mysql、java
^{bq}$
<p>差不多吧。您可以添加所需的所有可变部分,但不能接触int部分,因此可以添加的可变程度对您没有帮助。在</p>
<p>相反,不要使用int子类。使用存储int的常规对象。如果希望能够像int一样将其传递给<code>struct.pack</code>,请实现<code>__index__</code>方法来定义如何将对象解释为int:</p>
<pre><code>class IntLike(object): # not IntLike(int):
def __init__(self, value=0):
self.value = value
def __index__(self):
return self.value
...
</code></pre>
<p>您可以为<code>|</code>实现其他方法,如<code>__or__</code>,以及{<cd5>}的{<cd6>}的方法。不过,不要试图过分强调与int的完全互操作性;例如,不要试图使对象可用作dict键。毕竟它们是可变的。在</p>
<p>如果您的类是一个<code>int</code>子类,那么您将不得不牺牲您想要的<code>c.sixth_property = True</code>语法。您必须选择一个类似<code>c = c.with_sixth_property(True)</code>的替代方案,并以非变异的方式实现。在</p>