我最近一直在进行 OOP 探索。
我有两个类:一个用于事件,一个用于计算该事件的某些属性集。
class Event(object):
def __init__(self,name,info):
self.name = name
self.category = info.category
self.classification = info.classification
@property
def attributes(self):
return dict((k,v) for k,v in self.__dict__.items())
class class1(object):
def __init__(self,some_number):
self.number = some_number
@property
def category(self):
#stuff
return category
@property
def classification(self):
#stuff
return classification
现在我可以做类似的事情
e = Event('myevent', class1(42))
e.attributes
{'category': 1,
'classification': None,
'name': 'myevent'}
但我希望可以选择给出Event()
任何数量/组合的实例 future class2
,class3
等;因此我希望Event()
'sinit()
方法能够优雅地处理它们,以便e.attributes
返回所有适当的属性。给Event.__init__
一个 *param 来解包似乎并没有绕过它知道它需要分配给自己的属性名称的需要。最终,我想要做的是能够创建此事件,然后使用此范例在以后根据需要创建/更新其不同的属性集。可能吗?