Skip to main content
 首页 » 编程设计

python构造函数默认参数列表

2025年05月04日9傻小

<分区>

所有实例的默认参数列表都是同一个对象吗?

    class X(): 
      def __init__(self,a=[]): 
        self.member=a    
        print id(a) 
 
    k=X([1,2,3]) 
    g=X([1,2,3]) 
    t=X() 
    h=X() 

输出结果让我吃惊:

    140072782781832 
    140072782901976 
    140072782816536 
    140072782816536 

如您所见,当 a 等于 [1,2,3] 时,id 不同,但当 a 为空时,id 保持不变。但是,如果我删除 self.member,现在代码如下所示:

    class X(): 
      def __init__(self,a=[]): 
        print id(a) 
 
    k=X([1,2,3]) 
    g=X([1,2,3]) 
    t=X() 
    h=X() 

输出变成这样:

    140033294171528 
    140033294171528 
    140033294206232 
    140033294206232 

当 a 等于 [1,2,3] 时,id 保持不变。

我完全糊涂了...谁能解释一下?