python 表示树的类似枚举的结构

h7appiyu  于 2023-05-21  发布在  Python
关注(0)|答案(1)|浏览(81)

我想表示一个常量的字符串树,而不是一个动态的。
例如:
结构->房屋、塔楼
房子->绿色房子,黄色房子
tower -> small_tower,big_tower
其中每一个都是字符串(house ='house')
目标是能够以这样的方式访问树:

structure.house.yellow_house

然后它会给予我一串它们的枚举值:

'structure.house.yellow_house'

什么是定义这种结构的好方法?

tvokkenx

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。它更紧凑,但根据您的用例,它可能会产生名称空间冲突。

相关问题