gpt4 book ai didi

Python。奇怪的类属性行为

转载 作者:太空宇宙 更新时间:2023-11-04 06:58:03 26 4
gpt4 key购买 nike

>>> class Abcd:

... a = ''
... menu = ['a', 'b', 'c']
...
>>> a = Abcd()
>>> b = Abcd()
>>> a.a = 'a'
>>> b.a = 'b'
>>> a.a
'a'
>>> b.a
'b'

这一切都是正确的,每个对象都有自己的“a”,但是......

>>> a.menu.pop()
'c'
>>> a.menu
['a', 'b']
>>> b.menu
['a', 'b']

怎么会这样?以及如何使用列表作为类属性?

最佳答案

这是因为您初始化 menu 属性的方式是将所有实例设置为指向同一个列表,而不是具有相同值的不同列表。

相反,使用类的 __init__ 成员函数来初始化值,从而创建一个新列表并将该列表分配给该类的特定实例的属性:

class Abcd:
def __init__(self):
self.a = ''
self.menu = ['a', 'b', 'c']

关于Python。奇怪的类属性行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2707472/

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