Как устранить Python TypeError, которая возникает при попытке присвоить скрытые атрибуты класса в Spyder? - PullRequest
0 голосов
/ 09 июля 2019

Я использую 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?

...