首页 > 解决方案 > 为什么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']

标签: pythonpython-3.xconstructorargumentsdefault-arguments

解决方案


推荐阅读