gpt4 book ai didi

python - 我可以保留一份引用文献列表,该列表会自动更新吗?

转载 作者:太空宇宙 更新时间:2023-11-03 14:42:27 27 4
gpt4 key购买 nike

本质上,我是这样做的:

a = True
b = False
ls = [a, b]

a = False

print(ls)
> [True, False]

发生的事情是,无论 a 发生什么,都会在第一次包含后与列表分离。有什么方法可以更新 a 并让列表以干净的方式自行更新吗?

当然,我可以简单地执行 ls[0] = False 并完成。但在一个大型项目中,有许多移动部分,我想避免非描述性的括号索引。

我假设我可以对实例化类进行一些困惑的构造,然后遍历属性,但这听起来很麻烦。或者是?

最佳答案

如果您想避免索引并具有易于阅读的属性,那么您可以只使用具有类属性的类:

class Data:
a = True

并保留对它的多个引用:

data = Data
data2 = Data # or similarly data2 = data

data.a = False
print(data2.a)
# False

请注意,如果您实例化类,则需要保留对实例的引用而不是类,因为原始类将不再更新:

data = Data()
data2 = data

data.a = 123
print(data2.a)
# 123

# original class remains unchanged
print(Data().a)
# True

从 Python 3.7 开始,您可以使用 dataclass ,这使得自定义数据的实例化更简单:

from dataclasses import dataclass

@dataclass
class Data:
a = True

data = Data(a=False)
data2 = data
print(data2.a)
# False

最后,如果您确实关心变量状态,那么无论如何您很有可能会在一个类中工作,在这种情况下您可以使用属性:

class SomeClass:
def __init__(self):
self.a = False
self.b = True

@property
def ls(self):
return self.a, self.b

some_class = SomeClass()
some_class.a = True
print(some_class.ls)
# True, True

关于python - 我可以保留一份引用文献列表,该列表会自动更新吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52309212/

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