如何在 Python 中执行 class.variable.variable?

How to do class.variable.variable in Python?

class SubscriptionPrice:
    FREE = 0
    STARTER_PACK = 300


class SubscriptionTypes:
    FREE = "FREE"
    STARTER_PACK = "STARTER_PACK"

我有 2 个订阅计划,一个是免费的,另一个称为 STARTER PACK。我已经声明两个 classes 像常量一样工作。但是现在,我想将那些 classes 合并为一个 class.

我如何构建这个 class 并能够像这样调用它:

SubscriptionPlan.STARTER_PACK  # return str("STARTER_PACK")
SubscriptionPlan.STARTER_PACK.price  # return int()

而不是有两个不同的class。

如果可以的话,这个叫什么?我尝试了 @property 装饰器和多级函数,但没有成功。我用了Python 3.7,顺便说一句。

我认为您可能以错误的方式解决了这个问题。但是,如果你喜欢用点运算符引用事物,那么你可以使用这个 class

class AttrDict(dict):
    def __init__(self, *args, **kwargs):
        super(AttrDict, self).__init__(*args, **kwargs)
        self.__dict__ = self

那么你可以这样做。

>>> this = AttrDict( {'a':1, 'b':2} )
>>> this.a
1
>>> this.b
2

为了你的目的,你嵌套了它们

>>> this = AttrDict( {'STARTER_PACK': AttrDict({'price': 1234}) , 'FREE':2} )
>>> this.STARTER_PACK
{'price': 1234}
>>> this.STARTER_PACK.price
1234