Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为def';D_Python_Class_Singleton - Fatal编程技术网

Python 为def';D

Python 为def';D,python,class,singleton,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) 这个问题似乎源于这样一个事实:在对Foo.ZERO和Foo.ONE进行评估时,类Foo没有完全定义。在保持Foo.MEMBER的形式的同时,有没有办法克服这个问题?我认为这是不可能的!(也许

在Python中,是否有任何方法来声明所声明类型的类成员

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

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

这个问题似乎源于这样一个事实:在对
Foo.ZERO
Foo.ONE
进行评估时,类
Foo
没有完全定义。在保持
Foo.MEMBER
的形式的同时,有没有办法克服这个问题?

我认为这是不可能的!(也许我想不清楚) 如果可能的话这是因为, Foo有一个成员ZERO,它也会生成Foo,再次


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

我认为这是不可能的!(也许我想不清楚) 如果可能的话这是因为, Foo有一个成员ZERO,它也会生成Foo,再次


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

可以这样做:

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

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

可以这样做:

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

Foo.ZERO = Foo(0, 0)
Foo.ONE = Foo(0, 1)
这似乎有效:

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 
这似乎有效:

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 

您能解释一下为什么需要这样做吗?我假设目标是枚举类型?例如,类似于Java的
enum
语法。这实际上不是用于枚举(尽管这是一个很好的应用!),而是用于常量,如
Java.lang.BigInteger.ZERO
等。我正在为运筹学的应用程序编写严格的数字类-,如果你愿意的话。你能解释一下为什么需要这样做吗?我假设目标是枚举类型?例如,类似于Java的
enum
语法。这实际上不是用于枚举(尽管这是一个很好的应用!),而是用于常量,如
Java.lang.BigInteger.ZERO
等。我正在为运筹学的应用程序编写严格的数字类-,如果你愿意的话。