The*_*dor 25 python visibility constants
我想在类中定义一组常量,如:
class Foo(object):
(NONEXISTING,VAGUE,CONFIRMED) = (0,1,2)
def __init__(self):
self.status = VAGUE
Run Code Online (Sandbox Code Playgroud)
但是,我明白了
NameError: global name 'VAGUE' is not defined
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以定义这些常量,以便在课堂内可以看到而不诉诸global或self.NONEXISTING = 0等等?
Tho*_*ers 36
当您在类体中指定名称时,您将创建该类的属性.如果不直接或间接地引用该类,则无法引用它们.您可以Foo.VAGUE像其他答案一样使用,或者您可以使用self.VAGUE.您不必分配属性self.
通常,使用self.VAGUE就是你想要的,因为它允许子类重新定义属性,而不必重新实现使用它们的所有方法 - 这不是在这个特定的例子中看起来像一个明智的事情,但谁知道.
尝试而不是:
self.status = VAGUE
Run Code Online (Sandbox Code Playgroud)
这个:
self.status = Foo.VAGUE
Run Code Online (Sandbox Code Playgroud)
你必须指定课程