gpt4 book ai didi

python - Python 继承的问题

转载 作者:太空狗 更新时间:2023-10-30 02:06:06 24 4
gpt4 key购买 nike

我实际遇到问题的代码很长,所以我做了一个示例来显示我的问题。

我有两个继承自基类 (BaseClass) 的类。这两个类都向 self.Dict 添加了一些元素。但是,它们似乎会交叉污染元素。我期待 c0.Dict 返回 {'class0': 0}c1.Dict 返回 {'class1': 1}。但是它们都返回 {'class0': 0, 'class1': 1}。他们为什么会交叉感染?

class BaseClass :
def __init__ (self, _dict={}) :
self.Dict = _dict

class Class0 (BaseClass) :
def __init__ (self) :
BaseClass.__init__(self)
self.Dict['class0'] = 0

class Class1 (BaseClass) :
def __init__ (self) :
BaseClass.__init__(self)
self.Dict['class1'] = 1

c0 = Class0()
c1 = Class1()

print c0.Dict
print c1.Dict

最佳答案

你遇到了一个 python 陷阱:可变的默认参数。

http://blog.objectmentor.com/articles/2008/05/22/pythons-mutable-default-problem

class BaseClass :
def __init__ (self, _dict=None) :
self.Dict = _dict or {}

关于python - Python 继承的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6005316/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com