*** В книге Пола Бэрри «Изучаем программирование на Python» * (кстати, очень хорошая книга по Python!) приведён такой учебный пример (сс. 348 - 349): class CountFromBy: # Создаётся пустой класс pass a = CountFromBy() # Создаются объекты класса b = CountFromBy() с = CountFromBy() c # 0 c.increase() # Каждый вызов метода «increase» увеличивает значение счётчика на единицу c.increase() c.increase() # 3. После трёх вызовов метода «increase» счётчик равен трём *** Но ведь c выводит не 0, а <__main__.CountFromBy object at 0x0000012372435FD0>, а после c.increase() выходит ошибка: Traceback (most recent call last): File "<pyshell#10>", line 1, in <module> c.increase() AttributeError: 'CountFromBy' object has no attribute 'increase' *** 1) Почему выводится адрес объекта В Python переменная класса (например, c) хранит ссылку на объект в памяти компьютера. Когда мы пишем просто имя переменной (c), интерпретатор вызывает у этого объекта специальный метод __repr__, чтобы получить
AttributeError, или Досадная ошибка Пола Бэрри…
12 июня12 июн
3
3 мин