У меня есть некоторые сомнения относительно переменных класса python. Как я понимаю, если я определяю переменную класса, объявленную вне функции __init__()
, эта переменная будет создаваться только один раз как статическая переменная в C++.Переменные класса Python Вопрос
Это кажется правильным для некоторых типов python, например, для типа dict и list, но для базового типа, например. int, float, не то же самое.
Например:
class A:
dict1={}
list1=list()
int1=3
def add_stuff(self, k, v):
self.dict1[k]=v
self.list1.append(k)
self.int1=k
def print_stuff(self):
print self.dict1,self.list1,self.int1
a1 = A()
a1.add_stuff(1, 2)
a1.print_stuff()
a2=A()
a2.print_stuff()
Выход:
{1: 2} [1] 1
{1: 2} [1] 3
Я понимаю, результаты dict1 и list1, но почему INT1 поведение отличается?
self.int1 = что-то меняет ссылку –