9
所以我有一個類,我用它作爲本地命名空間。我在類中有一些靜態函數,但他們無法訪問類作用域變量。爲什麼是這樣?如何在沒有自我的情況下訪問類作用域變量?
class Foo:
foo_string = "I am a foo"
@staticmethod
def foo():
print foo_string
>>> Foo.foo()
[Stack Trace]
NameError: global name 'foo_string' is not defined
有什麼想法?
使用模塊作爲名稱空間的+1。 –
在3.x類編譯中,引用'__class__'的任何函數都變成了閉包。 '__class__'的單元格由新的'__build_class__'內置函數設置。 'staticmethod'從3.x中移除,所以在類中定義的普通函數可以引用'__class__'。 – eryksun
@DanielRoseman我沒有使用模塊作爲命名空間的主要原因是我嵌套了嵌套命名空間的類,管理如此之多的小文件是很難操作的。 – Lucretiel