Я использую Anaconda Spyder IDE. Для упрощения предположим, что у меня есть класс 'C' в пакете 'p', который имеет некоторые скрытые атрибуты, включая '__a'
. Я присваиваю значение '__a'
в методе конструктора 'C', например: self.__a = 1
'p' имеет файл __init__.py
со следующей строкой:
from p.C import C
.
Теперь, в родительском каталоге p
, если я запускаю python и в терминале, запустите:
from p import *
c = C()
c
назначен экземплярный объект "C", как я ожидаю. Однако, если я внесу изменения в файл «C.py» и попытаюсь создать новый экземпляр «C»:
c2 = C()
Я получаю ошибку:
TypeError: дескриптор '_C__a' для объекта 'C' не применяется к объекту 'C'
Может кто-нибудь объяснить, почему это происходит? Т.е. почему редактирование файла класса с последующим попыткой создать новый экземпляр этого класса вызывает приведенную выше ошибку TypeError?