Рассмотрим следующий класс:
class Token:
def __init__(self):
self.d_dict = {}
def __setattr__(self, s_name, value):
self.d_dict[s_name] = value
def __getattr__(self, s_name):
if s_name in self.d_dict.keys():
return self.d_dict[s_name]
else:
raise AttributeError('No attribute {0} found !'.format(s_name))
В моем коде токен имеет некоторую другую функцию (например, get_all (), которая возвращает d_dict, has (s_name), которая сообщает мне, имеет ли мой токен определенный атрибут).
В любом случае, я думаю, что это мой недостаток в моем плане, так как он не работает: когда я создаю новый экземпляр, python пытается вызвать __setattr__('d_dict', '{}')
.
Как мне добиться подобного поведения (возможно, более питоническим способом?) Без необходимости писать что-то вроде Token.set (имя, значение) и получать (имя) каждый, который я хочу установить или получить атрибут для токена .
Критики по поводу недостатков дизайна и / или глупости приветствуются:)
Спасибо!