是否可以在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定义一个特殊类(尽管在这个例子中,这可能是最好的解决方案......)。
答案 0 :(得分:1)
不,运算符应用于属性的值(由属性提供或从__dict__
映射或插槽中获取),而不是属性本身。
你将不得不返回一个实现__eq__
的特殊包装器,并且我很害怕返回它。