1

在 Python 中,是否有任何要声明所声明类型的类成员?

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

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

问题似乎源于这样一个事实,即Foo在评估时该类没有完全定义,Foo.ZERO并且Foo.ONE- 有没有办法在保持 的形式的同时克服这个问题Foo.MEMBER

4

3 回答 3

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 
于 2012-11-01T02:00:49.883 回答
1

可以这样做:

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

Foo.ZERO = Foo(0, 0)
Foo.ONE = Foo(0, 1)
于 2012-11-01T01:56:01.093 回答
0

我认为这是不可能的!(也许我不清楚)如果可能的话,那么这是因为,Foo 的成员 ZERO 也会生成 Foo,并且再次......

我认为如果可以产生类,python也会提醒你或其他东西。

于 2012-11-01T01:56:00.177 回答