Задать вопрос
@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'

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

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

Похожие вопросы
Greenway Global Новосибирск
от 150 000 ₽
SPA2099 Москва
До 100 000 ₽
HR Prime Москва
от 300 000 до 3 800 000 ₽