def'd类型的类常量

时间:2012-11-01 01:46:51

标签: python class singleton

在Python中,有没有声明要声明的类型的类成员?

class Foo:
    def __init__(self, a, b):
        self.one = a
        self.two = b

    ZERO = Foo(0, 0)
    ONE = Foo(0, 1)

这个问题似乎是因为在评估FooFoo.ZERO时课程Foo.ONE没有完全定义 - 有什么方法可以克服同时保持Foo.MEMBER的形式

3 个答案:

答案 0 :(得分:5)

这似乎有效:

class Enum(object):
    def __init__(self, a, b): 
        self.one = a
        self.two = b 

    def __metaclass__(name, bases, dict):
        cls = type(name, bases, dict)
        cls.ZERO = cls(0, 0)
        cls.ONE = cls(0, 1)
        return cls 

答案 1 :(得分:1)

可以这样做:

class Foo:
    def __init__(self, a, b):
        self.one = a
        self.two = b

Foo.ZERO = Foo(0, 0)
Foo.ONE = Foo(0, 1)

答案 2 :(得分:0)

我认为这是不可能的! (也许我不清楚) 如果有可能,那么这个原因,     Foo有成员ZERO,它也生成了Foo,并再次....

我认为如果可以生成类,python也会提醒您或其他内容。