如何从python中的静态属性返回类的实例

时间:2017-03-17 03:07:44

标签: python

好奇, 是否可以将静态attrs保留在返回同一类的实例化对象的类中?特别是不使用工厂方法而是使用attr

class Money:
    CENT = Money('cent')

    def __init__(self, value):
        self.value = value

Money.CENT    #==> Returns Money('cent')

我能想到的最好的是,但不在同一个班级内。

class SampleMoney:
    CENT = Money('cent')
    DOLLAR = Something('dollar')

SampleMoney.CENT #==> Money('cent')

1 个答案:

答案 0 :(得分:1)

您可以使用以下hack来创建类属性:

class Something:
    class __metaclass__:
        @property
        def EMPTY(cls):
            return cls('empty')

或者,只需在之后定义它吗?

class Something:
    # ...

Something.EMPTY = Something('empty')