python 等号 重载,在python属性上重载运算符

在Python中,操作符不能直接应用于属性,它们作用于属性的值。若要实现操作符重载,需要返回一个实现了所需特殊方法(如`__eq__`)的包装器对象。在给定的例子中,虽然可以为`_bar`创建一个特殊类来实现这一功能,但通常这不是最佳解决方案。
摘要由CSDN通过智能技术生成

Is it possible to overload an operator on a python property? Something like:

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 )

without defining a special class for _bar (although in this example, that's probably the best solution...).

解决方案

No, operators are applied to the value of an attribute (be it supplied by a property or taken from the __dict__ mapping or a slot), never the attribute itself.

You will have to return a special wrapper implementing __eq__ and return that, I am afraid.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值