Как напечаталось значения атрибута __a объекта c?

Дан класс:

class C:
    __a = 42

c = C()
print(...)

Что нужно написать вместо ..., чтобы напечаталось значения атрибута __a объекта c?


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

Автор решения: S. Nick

Попробуйте так:

class C:
    __a = 42


c = C()
print(c._C__a)
→ Ссылка
Автор решения: CrazyElf

Смотрите, как можно найти это самостоятельно, если вы не знаете наверняка. В питоне есть такая встроенная функция dir, которая выдаёт список атрибутов объекта. Вы можете просто перебрать таким образом все атрибуты и посмотреть, в каких встречается искомое название как подстрока. Ну и можно сразу получить значение этого атрибута, используя метод __getattribute__:

print(*[f'c.{x} => {c.__getattribute__(x)}' for x in dir(c) if '__a' in x], sep='\n')

Вывод:

c._C__a => 42
→ Ссылка