在python属性上重载运算符

时间:2013-11-13 16:37:35

标签: python properties operator-overloading

是否可以在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定义一个特殊类(尽管在这个例子中,这可能是最好的解决方案......)。

1 个答案:

答案 0 :(得分:1)

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

你将不得不返回一个实现__eq__的特殊包装器,并且我很害怕返回它。