[英]__add__ method in Python 3
因此,我在python 3中编写了第一个程序,并带有运算符重载,而我被困在add (+)运算符上。
def __add__(self, newMember):
if(isinstance(newMember, Queue)):
tempList=self.myQueue[:] # makes a copy
tempList.extend(newMember.myQueue)
return Queue(tempList)
def __str__(self):
if not self.myQueue:
string="."
else:
string=""
for x in self.myQueue:
string=string+str(x)
if(x<len(self.myQueue)):
string=string+", "
else:
string=string+"."
return string
基本上,我正在制作一个Queue类(我知道已经存在这样一个类),然后通过键入c = c1 + c2连接两个Queue对象。 但是当我打印(c)时,它弄乱了“,”和“。”。 无法解决问题。 有什么帮助吗?
要回答第二个问题(可能应该是关于SO的一个单独问题,而不是编辑此问题):
if(x<len(self.myQueue)):
正在检查字符串的值是否小于列表的整数长度。 这没有任何意义,并且始终为False。
您可以将整个方法重写为:
def __str__(self):
return ', '.join(str(x) for x in self.myQueue) + '.'
在代码中,将tempList
设置为self.myQueue
,然后对其进行修改。 这将更改两个队列。 您要复制myQueue
而不共享引用。
使用tmplist = queue时,两个变量都指向同一对象。 也许这将有助于了解:
>>> queue = []
>>> tmplist = queue
>>> tmplist.append(1)
>>> tmplist
[1]
>>> queue
[1]
>>> tmplist = queue[:] #make a copy
>>> tmplist.append(1)
>>> tmplist
[1, 1]
>>> queue
[1]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.