[英]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.