@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'

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

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

Войти через центр авторизации
Похожие вопросы
25 окт. 2024, в 22:20
3000 руб./за проект
25 окт. 2024, в 21:46
7500 руб./за проект
25 окт. 2024, в 21:45
2000 руб./в час