如何在Python中重载一元负(减)运算符?

时间:2017-08-02 07:51:58

标签: python

class Card():
    def __init__(self, val):
        self.val = val

c = Card(1)
d = -c

我希望dCard个对象,d.val为-1。我怎么能这样做?

1 个答案:

答案 0 :(得分:19)

听起来你希望Card上的一元减号运算符返回一个值为negated的新卡。如果这就是您想要的,您可以在类上定义__neg__运算符,如下所示:

class Card:
    def __init__(self, val):
        self.val = val
    def __neg__(self):
        return Card(-self.val)

__neg__包含在方法列表中,可以在此处重写以自定义算术运算:https://docs.python.org/3/reference/datamodel.html#emulating-numeric-types