Почему изменяется атрибут объекта, а не класса

class Simple:
    number = 0
    def change(self):
        Simple.number += 1
d = Simple()
d.change()
print(d.number) #Выведет 1

Вот не могу понять - почему у объекта изменился атрибут, хотя я писал, что он должен меняться у класса Simple? Я новичок в ООП.


Ответы (1 шт):

Автор решения: n1tr0xs

Все дело в том, что для всех объектов этого класса, которые вы создадите, переменная number одна и та же.

При обращении к переменным если интерпретатор не обнаружит "объектную" переменную, т.е. self.number, то он попробует найти переменную с именем number как классовую.

→ Ссылка