我有一个“实体”对象,该实体包含最简单形式的entity_type属性:
class Entity:
def __init__(entity_type: str):
self.entity_type = entity_type
我支持以下实体类型:
{'entity_a', 'entity_b', 'entity_c', 'entity_d'}
我需要为这些实体构造一个可能无限的(宽)树,只有1个约束:
entity_a只能包含entity_b,entity_c和entity_d的子项,
entity_b只能包含entity_c,entity_d和
的子级entity_c只能包含entity_d的子项,
entity_d不能有孩子
entity_a tho可能有50个entity_b,其中可能有50个entity_c,其中可能有50个entity_d。
这里的深度最多为4层,但是宽度可以是无限的
可以针对此问题采用哪种方法/算法?提供一种相对简单的方法来构造实体的各种层次结构?
答案 0 :(得分:1)
我建议可能可行的最简单的方法。
class InvalidEntityType(Exception):
pass
class Entity:
def __init__(entity_type: str):
self.entity_type = entity_type
self.entities = []
def add_entity(self, entity):
if self.entity_type < entity.entity_type:
self.entities.append(entity)
else:
raise InvalidEntityType(
"Entity of type {0} cannot contain entities of type {1}".format(
self.entity_type, entity.entity_type))