gpt4 book ai didi

Python:变量的新实例未在类的新实例中创建

转载 作者:行者123 更新时间:2023-11-28 20:25:23 25 4
gpt4 key购买 nike

<分区>

我发现了奇怪的 Python 行为(或者我可能不明白属性的继承和/或默认值是如何工作的)。

对于给定的代码

class A(object):
def __init__(self, s):
self.s = s
print "in init", self.s

class B(A):
def __init__(self, s = set()):
super(B, self).__init__(s)
print "after super", self.s
self.s.add('foo')
print '--------------'

if __name__ == "__main__":
a = B()
b = B()

我得到以下输出:

in init set([])
after super set([])
--------------
in init set(['foo']) # Why it has value set in other object?!
after super set(['foo'])
--------------

当然,期望的行为是用空集初始化第二个对象 (b) 中的 self.s,但由于未知原因,它从前一个对象获取状态。为什么会这样?如何获得期望的行为?

谢谢!

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