Вся информация о том, как копируются переменные, верна, и рекомендуемая статья хорошо объяснена.Но если вы используете class1.var1
, вы никогда не получите значение self.var1
из class1
.Вы можете проверить почему с помощью следующего кода:
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
(что составляет var1
в строке 2) и self.var1
.
Если вы хотите получить значение self.var1
из Class2
, вы должны инициализировать 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()