类中的方法__add__

时间:2015-11-17 12:08:29

标签: python python-2.7

在普通班级中,我使用方法__add__

class MyNum:
    def __init__(self,num):
        self.num=num
    def __add__(self,other):
        return MyNum(self.num+other.num)
    def __str__(self):
        return str(self.num)

但是,如果我有__init__没有输入(只有我自己),就像这样:

class MyNum:
    def __init__(self):
      self.num = num
    def __add__(self, other):
      ?

如何在此课程中使用此方法?如果我使用:return MyNum(self.num + other.num)我得到一个错误,__init__只取一个参数,给出两个。

1 个答案:

答案 0 :(得分:2)

通过返回MyNum(self.num + other.num),您将self.num + other.num的结果传递给MyNum的构造函数。

如果您希望__add__方法返回MyNum的新实例,并继续将该值传递给构造函数,则必须将其作为__init __的一部分接受。

或者,您可以实例MyNum,并手动添加.num属性:

class MyNum(object):
    def __init__(self):
        self.num = 0
    def __add__(self, other):
        temp_mynum = MyNum()
        temp_mynum.store_num(self.num + other.num)
        return temp_mynum
    def store_num(self, value):
        self.num = value

当然,您必须在通用代码中实例MyNum对象时添加num属性:

def foo():
    value_in_function = MyNum()
    value_in_function.value(7)
    use_it(value_in_function)