2012-04-06 88 views
6
class SomeClass: 
    SOME_CONST = "hello" 
    SOME_OTHER_CONST = SomeClass.SOME_CONST + " world" 

这不起作用。参照另一类变量定义中的类变量

NameError: name 'SomeClass' is not defined

有没有什么办法可以引用类内的类?

+1

是否有你需要的类名什么特别的原因,或者你只是需要访问其他类的属性?您将它视为同一范围内的另一个变量,例如'SOME_OTHER_CONST = SOME_CONST' – Darthfett 2012-04-06 05:22:06

+0

前几天有人问这个问题。最简洁的答案是不。长答案有时使用元类或其他东西。请参阅[这里](http://stackoverflow.com/questions/9987018/why-does-self-outside-a-functions-parameters-give-a-not-defined-error/9987102#9987102)了解为什么。 – aaronasterling 2012-04-06 05:22:39

回答

11

你不需要在类名

class SomeClass: 
    SOME_CONST = "hello" 
    SOME_OTHER_CONST = SOME_CONST + " world" 
+0

@AramKocharyan PHP需要引用该类来访问类变量,因为它具有更为标准的类概念。在python中,虚拟机进入本地作用域,并执行'class'语句下的所有代码,就像它是一个函数一样。然后它将结果名称空间转换为类。所以你可以用Python做这件事,因为它已经在同一个名字空间。 – aaronasterling 2012-04-06 05:34:57