@Eugene523

Почему возникает ошибка при вызове delattr?

Вот здесь ошибок нет:
class SomeClass:
    q = 42

a = SomeClass()
a.q = 3
print(a.q)
delattr(a, "q")

А вот здесь возникает ошибка на 7-ой строке:
class SomeClass:
    q = 42

a = SomeClass()
#a.q = 3
print(a.q)
delattr(a, "q")

Traceback (most recent call last):
  File "<string>", line 7, in <module>
AttributeError: 'SomeClass' object has no attribute 'q'

Почему?
  • Вопрос задан
  • 52 просмотра
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Потому в твоем коде q - это атрибут SomeClass, а не его экземпляров.
В первом случае ты создал атрибут q у экземпляра a, а потом прочитал и удалил.
Во втором случае ты попытался прочитать атрибут q на экземпляре, но его там нет. Поэтому язык начал искать атрибут в самом классе и нашел. А потом ты попытался удалить атрибут на экземпляре. Но его там нет.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы