【发布时间】:2019-08-15 02:26:39
【问题描述】:
我希望创建一个包含类中其他值的列表,并确保该列表是最新的,而无需自己更新。
我试过这样写:
class Test:
def __init__(self, arg, arg2):
self.arg = arg
self.arg2= arg2
self.list = [self.arg, self.arg2] #list I want up to date
def update(self, arg, arg2):
self.arg = arg
self.arg2 = arg2
#the simple answer is to add: self.list=[self.arg, self.arg2] or a function doing it. That is not what I am asking.
def write_list(self):
print(self.list)
tes = Test(1, 2)
tes.write_list()
tes.update(23,24)
tes.write_list()
我希望输出是:
[1,2]
[23,24]
【问题讨论】:
-
对于某些类型的数据,它总是复制值 - 即。对于整数 - 对于其他人,它将使用参考(指针),它将按您的预期工作 - 即。对于列表或类。一些模块使用类来保存像整数这样的值(
tkinter有IntVar,kivy有PropertyInteger)然后列表将保存引用/指针 - 但它可能需要类的方法来设置/获取值 - @987654328 @,IntVar.set(val) -
取决于
arg和arg2的数据类型。如果它们是不可变的(例如int),则不能这样做。如果不是,您可以简单地改变它们(例如self.arg.update(arg)),这也会反映在列表中。 -
好的,谢谢您的回答!就像我当时想的那样,没有办法用最少的代码做到这一点。
-
@furas:Python 不复制整数。持有整数的变量确实持有对整数的引用,就像列表和任何其他 Python 数据类型一样。只是你不能做任何事情来改变一个 int,而你可以改变一个列表。
标签: python pointers variables reference