Python:在类/对象之间共享变量
好吧我有两个类,一个依赖于另一个。 所以我需要从第一个类中获得一个变量并在第二个类中使用它。 但第二个变量是不断变化的。 像这样:Python:在类/对象之间共享变量
class class1 :
var1 = 0
def meth1 (self):
self.var1 += 1
class class2:
var2 = class1.var1
def see (self):
return self.var2
obj1 = class1()
obj2 = class2()
obj1.meth1()
obj2.see()
这将返回0而不是1 如果我说在改变VAR类之一,它打印的打印VAR1。 但是,当class2得到它仍然是0 ... 我想它仍然指的是旧的var1。 我在做什么错,我应该做什么?
由于
class class2:
var2 = class1.var1
这是class1.var1
的电流值的副本。
“我需要从第一类获取变量,并在第二次使用它”
使用class1.var1
代替var2
使当前值的副本。
OH所以当我更改var1时,var2仍然指向什么var1不会是? 现在,这是有道理的。谢谢您的帮助! –
这就是“复制”的意思,是正确的。 –
非常有用的文章,这将有助于了解python中的变量以及如何制作正确的副本:http://henry.precheur.org/python/copy_list – Ski
有关变量如何被复制的所有信息都是真实的,推荐的文章已经很好地解释了。但是,如果您使用class1.var1
,则永远不会从class1
获得值self.var1
。你可以用下面的代码检查原因:
class Class1 :
var1 = 0
def meth1 (self):
self.var1 += 1
print(id(self.var1))
class Class2:
def meth2 (self):
print(id(Class1.var1))
obj1 = Class1()
obj2 = Class2()
obj1.meth1()
obj2.meth2()
你在哪里得到的Class1.var1
不同的ID(这是在第2行var1
)和self.var1
。
如果你想从Class2
得到self.var1
的价值,你必须初始化var1
类外,并使其在其中添加了一个数字的函数内部全球:
var1 = 0
class class1 :
def meth1 (self):
global var1
var1 += 1
class class2:
def meth2 (self):
print(var1)
obj1 = class1()
obj2 = class2()
obj1.meth1()
obj2.meth2()
第一。请大写类名称。第二。为什么你首先不使用类级变量?你的'var1'不是一个实例变量。你为什么要避免普通的实例变量? –
什么是实例变量? –
这是一个全新的问题。 1.实际上是完整的** Python教程。 2.搜索“Python实例变量”。 3.在完成整个教程并阅读关于Python实例变量的数百个网页之后,再次提问。这是一个基本的概念,很难涵盖对无关问题的评论。 –