Skip to main content
 首页 » 编程设计

python之在 python 属性上重载运算符

2025年05月04日12langtianya

是否可以在 python 属性上重载运算符?像这样的东西:

class Foo( object ): 
 
    @property 
    def bar( self ): return unfoobar( self._bar ) 
 
    @bar.setter 
    def bar( self, baz ): self._bar = foobar( baz ) 
 
    @bar.__eq__ 
    def bar( self, baz ): return self._bar == foobar( baz ) 

没有为 _bar 定义一个特殊的类(虽然在这个例子中,这可能是最好的解决方案......)。

请您参考如下方法:

不,运算符应用于属性的值(由属性提供或从 __dict__ 映射或插槽中获取),而不是属性本身.

恐怕你必须返回一个实现了 __eq__ 的特殊包装器并返回它。