python - 为什么python构造函数接收错误的默认值?
问题描述
我创建了一个带有构造函数的类 Queue,该构造函数将列表作为参数,默认为空列表。虽然对象 q3 是不使用参数创建的,但构造函数内部的默认值是对象 q2。
我在 Ubuntu 20.04 LTS 虚拟机上使用 Python 3.8.5。
class Queue:
def __init__(self,elements = []):
self.elements = elements
print(elements)
def enqueue(self,element):
self.elements.append(element)
def dequeue(self):
return self.elements.pop(0)
def peek(self):
if len(self.elements)>0:
return self.elements[0]
else:
return None
q1 = Queue(["Q1_abc","Q1_def","Q1_ghi"])
q2 = Queue()
q2.enqueue("Q2_abc")
q2.enqueue("Q2_def")
q2.enqueue("Q2_ghi")
q3 = Queue()
q3.enqueue("Q3_abc")
print(q3.elements)
q3 = Queue()
q3.enqueue("Q3_abc")
print(q3.elements)
Output:
['Q1_abc', 'Q1_def', 'Q1_ghi']
[]
['Q2_abc', 'Q2_def', 'Q2_ghi']
['Q2_abc', 'Q2_def', 'Q2_ghi', 'Q3_abc']
解决方案
推荐阅读
- java - 如何添加和删除动画 RecyclerView 的项目
- php - 从数组中删除过去的日期
- solr - Solr 7.4 在我尝试启动时抛出错误
- github-actions - 如何捕获 github 操作“使用”的所有输出?
- c++ - 在这段代码中,如何使用 notify 调用 wait() 调用?
- reactjs - 何时执行带有双箭头符号的“useEffect”?
- r - 个人中的行编号(Id)
- python - 来自查询集的加权平均值 - Django
- ios - Swift:如果 traitCollection.userInterfaceStyle == .unspecified,我如何确定它是处于亮模式还是暗模式?
- django - 在我的视图中添加删除功能后,Django 'AnonymousUser' 对象不可迭代