Я хочу иметь класс с несколькими атрибутами. Я хотел бы, чтобы у него также был способ вывести эти атрибуты в виде словаря и пропустить все значения None. Также в идеальном сценарии я бы хотел, чтобы этот dict был вложенным, но обо всем по порядку:
class MyClass():
def __init__(self, a=False, b=None, c=None, ...):
self.a = a
self.b = b
self.c = c
...
@property
def dictionary(self):
dictionary = { k:v for k, v in self.__dict__.items() if v != None }
return dictionary
Это работает нормально, однако проблема в том, что при попытке включить результат из self.a + self.b if! = Нет в словаре. __dict__
выводит только те значения, которые являются частью __init__
. Я попытался решить эту проблему с помощью дополнительного атрибута, а затем с помощью setter:
class MyClass():
def __init__(self, a=False, b=None, c=None, ... , _var=None):
self.a = a
self.b = b
self.c = c
...
self.var = None
@property
def _var(self):
_var = None
return self.var
@_var.setter
def _var(self):
if self.a & self.b != None:
self.var = self.a + self.b
return self.var
@property
def dictionary(self):
dictionary = { k:v for k, v in self.__dict__.items() if v != None }
return dictionary
К сожалению, это не инициализируется при создании экземпляра. Можно ли это сделать? Я думаю, что выгляжу неправильно, но как-то __dict__
кажется правильным способом сделать это. Я очень новичок в ООП, так что это все очень ново для меня. Заранее спасибо!