我想表示一个常量的字符串树,而不是一个动态的。例如:结构->房屋、塔楼房子->绿色房子,黄色房子tower -> small_tower,big_tower其中每一个都是字符串(house ='house')目标是能够以这样的方式访问树:
structure.house.yellow_house
然后它会给予我一串它们的枚举值:
'structure.house.yellow_house'
什么是定义这种结构的好方法?
tvokkenx1#
我有一个类似的问题,并希望从更有经验的人那里找到答案,但我的第一个天真的想法是使用类层次结构。
class Structure: @classmethod def name(cls): if cls == Structure: return cls.__name__ else: return cls.__bases__[0].name() + '.' + cls.__name__ class House(Structure): pass class Tower(Structure): pass class GreenHouse(House): pass class YellowHouse(House): pass class SmallTower(Tower): pass class BigTower(Tower): pass print(BigTower.name()) # Structure.Tower.BigTower print(House.name()) # Structure.House print(Structure.name()) # Structure
也许这是滥用类的功能,但这很简单。访问与您指定的有点不同,这只是使用叶名称,例如BigTower,而不是写入整个树路径Structure.Tower.BigTower。它更紧凑,但根据您的用例,它可能会产生名称空间冲突。
BigTower
Structure.Tower.BigTower
1条答案
按热度按时间tvokkenx1#
我有一个类似的问题,并希望从更有经验的人那里找到答案,但我的第一个天真的想法是使用类层次结构。
也许这是滥用类的功能,但这很简单。访问与您指定的有点不同,这只是使用叶名称,例如
BigTower
,而不是写入整个树路径Structure.Tower.BigTower
。它更紧凑,但根据您的用例,它可能会产生名称空间冲突。