如何做类.变量.变量在Python中?

2024-09-30 18:33:55 发布

您现在位置:Python中文网/ 问答频道 /正文

class SubscriptionPrice:
    FREE = 0
    STARTER_PACK = 300


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

我有两个订阅计划,一个是免费的,另一个是所谓的入门包。我已经声明两个类像常数一样工作。但是现在,我想把这些类合并成一个类。你知道吗

我如何构建这个类,并能像这样称呼它:

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

而不是两个不同的班级。你知道吗

如果这是可能的,这叫什么?我尝试了@propertydecorator和多级函数,但没有成功。我用了Python 3.7,顺便说一句


Tags: free声明return常数pricepack计划class
1条回答
网友
1楼 · 发布于 2024-09-30 18:33:55

我想你可能走错了路。但是,如果您喜欢使用点运算符引用对象,则可以使用此类

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

相关问题 更多 >