繁体   English   中英

类中的方法__add__

[英]Method __add__ in a class

在普通的班级中,我在这种形式下使用方法__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__ (只有self),像这样:

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

如何在课堂上使用此方法? 如果使用:return MyNum(self.num + other.num),我得到一个关于__init__的错误,它仅使用一个参数,给出两个参数。

通过返回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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM