#python #class #oop
#python #класс #ооп
Вопрос:
Я пытаюсь установить свойство class, но словарь не устанавливается. У меня есть другой код, где работал тот же код
class CB:
def __init__(self):
self._kst_mapping = None
@property
def kst_mapping(self):
if self._kst_mapping is None:
self.set_kst_mapping()
return self._kst_mapping
def set_kst_mapping(self):
kst_mapping = {
'Test1': [4130,4135,4140,4171,4168,4169,4136],
'Test2': [4146,4157,4151],
'Test3': [4149,4161,4154],
'Test4': [4148,4141,4159,4172,4153],
'Test5': [4137,4147,4152,4158],
'Test6': [4145,4155,4156,4146],
'Test7': [4142,4173]
}
self._kst_mapping = kst_mapping
def print_kst(self):
print(self._kst_mapping[0])
При выполнении print_kst
я получаю следующую ошибку:
TypeError: 'NoneType' object is not subscriptable
Это указывает на то, что атрибут установлен неправильно, поскольку он остается как None .
У вас есть идея, в чем моя ошибка?
Комментарии:
1. Очень вероятно, потому что ваш способ получения свойства (или
set_kst_mapping()
) не был вызван до print_kst()2.
print(self.kst_mapping)
—_
не требуется, и это dict, а не список.3. @UltraInstinct да, это кажется вероятным. Но какой самый красивый способ вызова функции?
4. @bereal
_
это было решение. После удаления этого он сработал.5. Вероятно, вам следует
print(self.kst_mapping)
.