我有两个班级,Lower
和Higher1
。当我调用parse
实例的Lower
方法时,它会检查它代表哪种更高级别,在我的示例中,我只显示Higher1
。然后它创建这个更高级的实例并返回它。我可以通过调用Lower
方法将更高级别的实例转换回build
的实例。
class Lower:
def __init__(self, data):
self.data = data
def parse(self):
if self.data[0] == "a":
value = self.data[1:]
return Higher(value)
else:
...
class Higher1:
def __init__(self, value):
self.value = value
def build(self):
return Lower("a" + self.value)
到目前为止一切顺利,现在我想为value
的{{1}}属性的每个可能值创建类。假设Higher1
和"green"
是可能的值,则有两个额外的类称为"blue"
和Higher1Green
。
Higher1Blue
将评估为Higher1("blue")
。
Higher1Blue
将评估Higher1("blue").build()
的实例,其属性为Lower
beeing data
。
我的问题是,这是否可行,只需指定例如"ablue"
和blue
之间的映射,而不是代码中的多个位置。我不关心类Higher1Blue
和Higher1Blue
是动态生成还是使用Higher1Green
定义。
我的第一种方法是覆盖class
的{{1}}方法,以便能够返回__new__
或Higher1
的实例。但我找不到一种方法来进行向后映射(Higher1Blue
),而无需再次指定映射。
答案 0 :(得分:0)
使用以下链接,我能够实现我想要的目标:
Reverse mapping class attributes to classes in Python
我不想投票给重复,因为它不是完全相同的问题而且需要很长时间等待50票,所以人们可以花时间寻找解决方案,而我已经有了。