dredsss
на кой интерпретатору тратить напросто память на переменные, к которым у класса доступа нет и никак они на него не влияют.
ну начнем с того что память он и не тратит, почитайте чтоле как работают классы и наследование в пайтоне. Когда вы создаете класс наследник, он не тянет в себя все что было у родителя. Он просто хранит ссылку на родителя, и если чегото у себя не находит спрашивает у родителя. Поэтому память не тратиться.
dredsss
это - переменная. А на кой она мне нужна
Откуда же нам знать. Вы странный, сначала создали private переменную, а потом жалуетесь что не можете к ней получить доступ “извне”. Так устроен пайтон что переменные начинающиеся с “__” кагбе считаються private. Это если совсем по простому. На самомо деле двойное подчеркивание “__” не означает “private” по аналогии с С++ или Java, это скорее псевдопривантые переменные. Вы используете их для определения переменных, которые являются “локальными по классу”.
Вы всеравно можете к ним оратиться если знаетет имя класса.
Например изменив ваш код, я получу значение переменной.
...
class C(A):
def try2(self):
print(A._A__var)
print(C._A__var)
c = C()
c.try2()
>>>
secret variable
secret variable
>>>
ХЗ почему у вас try3 не отрабатывает, должно все выводить.
А.__var автоматически преобразуеться в А._A__var в классе A. В классе С он превращаеться в С._С__var(но только если вы решите там ее обьявить ). Поэтому каждый подкласс может определять свою собственную переменную __var без переопределения переменных родителей. Такое, управление именами не позволяет вам случайно вызвать эти переменные/методы.