在普通班级中,我使用方法__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__
只取一个参数,给出两个。
答案 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)