Python中一个经典的参数错误

Posted 网络迷途者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python中一个经典的参数错误相关的知识,希望对你有一定的参考价值。

 1 class Company:
 2     def __init__(self, name, staffs=[]):#实体化对象时没有传入列表,导致实体对象共用同一默认列表对象
 3         self.name = name
 4         self.staffs = staffs
 5 
 6     def add(self, staff_name):
 7         self.staffs.append(staff_name)
 8 
 9     def remove(self, staff_name):
10         self.staffs.remove(staff_name)
11 
12 if __name__=="__main__":
13     com1 = Company("com1", ["test1", "test2"])
14     com1.add("test3")
15     com1.remove("test1")
16     print("com1值:",com1.staffs)
17 
18     #com2与com3没有传入列表对象,使用了默认值作为列表对象
19     com2 = Company("com2")
20     com2.add("test2")
21     print("com2值:",com2.staffs)
22 
23     com3 = Company("com3")
24     com3.add("test3")
25     print("com2值:",com2.staffs)
26     print("com3值:",com3.staffs)
27 
28     #打印类默认值
29     print("类默认值:",Company.__init__.__defaults__)
30     #判断是否为同一对象
31     print("com2值与com3值是否为同一对象:",com2.staffs is com3.staffs)

 

输出:

 

com1值: [test2, test3]
com2值: [test2]
com2值: [test2, test3]
com3值: [test2, test3]
类默认值: ([test2, test3],)
com2值与com3值是否为同一对象: True

 

以上是关于Python中一个经典的参数错误的主要内容,如果未能解决你的问题,请参考以下文章

XSLT:无法将操作数转换为“结果树片段”

《Python机器学习及实践》----监督学习经典模型

《Python机器学习及实践》----监督学习经典模型

几个关于js数组方法reduce的经典片段

Python 中 6 个经典的新手错误,你碰到过几个?

几个关于js数组方法reduce的经典片段