@Property — функция не выполняется — Python

#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) .