【问题标题】:Overloading operators on python properties在 python 属性上重载运算符
【发布时间】:2013-11-13 16:37:34
【问题描述】:

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

【问题讨论】:

    标签: python properties operator-overloading


    【解决方案1】:

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

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

    【讨论】:

    • 很容易添加Bar 类。谢谢。当我允许的时候,我会接受你的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多