在python中创建了一个复合类之后,是否有一种(简单的)方法可以直接访问组件的属性/方法?也就是说,没有指定属性/方法属于哪个组件
以下是MWE:
class Component1:
def __init__(self, data1):
self.data1 = data1
def add1(self):
return self.data1 + 1
class Component2:
def __init__(self, data2):
self.data2 = data2
def add2(self):
return self.data2 + 2
class Composite:
def __init__(self, data1, data2):
self.component1 = Component1(data1)
self.component2 = Component2(data2)
composite = Composite(data1, data2)
# Now I can access data1 (and data2)
# But it is really cumbersome
composite.component1.data1
# So I would like to have just
composite.data1
有没有办法做到这一点,特别是当属性和方法的数量很多时?我知道我可以添加属性
@property
def data1(self):
return self.component1.data1
但如果有大量的属性和方法,那将是痛苦的
每个组件具有彼此不同的属性/方法名称。也没有共同的基础(例如,Component1().comp1_attibute_i
或任何类似的基础)。名称末尾的数字在实际问题中并不存在(它只是用于简化)
为您的类派生或使用词典。一个字典有属性,一个字典有方法
因此属性访问是
composite["data1"]
函数可以通过
getattr
调用。我不知道细节,但有一些有用的东西相关问题 更多 >
编程相关推荐