1

Pythonでは、宣言されている型のクラスメンバーを宣言するものはありますか?

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

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

この問題は、 andFooの評価時にクラスが完全に定義されていないという事実から発生しているようです- の形式を維持しながらこれを克服する方法はありますか?Foo.ZEROFoo.ONEFoo.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にはFooを生成するメンバーZEROがあり、再び....

クラスを作成できる場合、pythonもあなたまたは他の何かに警告すると思います。

于 2012-11-01T01:56:00.177 に答える