python中类变量的访问方式_在Python中,如何访问类方法中的“静态”类变量
就像所有的好例子一樣,你簡化了你實際想要做的事情。這很好,但值得注意的是,python在類和實例變量方面有很大的靈活性。方法也是如此。為了獲得很好的可能性,我建議閱讀Michael F?tsch' new-style classes introduction,特別是第2至6部分。
在開始時需要記住很多工作的一件事是python不是java。不僅僅是陳詞濫調(diào)。在java中,編譯整個類,使命名空間的解析變得非常簡單:任何在方法外(任何地方)聲明的變量都是實例(或者,如果是靜態(tài)的,類)變量,并且可以在方法中隱式訪問。
使用python,宏偉的經(jīng)驗法則是有三個名字空間按順序搜索變量:
函數(shù)/方法
當前模塊
內(nèi)置命令 LI>
{begin pedagogy}
這個例外是有限的。發(fā)生在我身上的主要原因是,當加載類定義時,類定義是它自己的隱式名稱空間。但是,只有在模塊被加載時才會持續(xù),并且在方法內(nèi)完全被忽略。從而:
>>> class A(object):
foo = 'foo'
bar = foo
>>> A.foo
'foo'
>>> A.bar
'foo'但:
>>> class B(object):
foo = 'foo'
def get_foo():
return foo
bar = get_foo()
Traceback (most recent call last):
File "", line 1, in
class B(object):
File "", line 5, in B
bar = get_foo()
File "", line 4, in get_foo
return foo
NameError: global name 'foo' is not defined{end pedagogy}
最后,需要記住的是,您可以訪問任何您想要訪問的變量,但可能不會隱式地訪問。如果你的目標簡單明了,那么去Foo.bar或self.bar可能就足夠了。如果你的例子變得越來越復雜,或者你想做一些像繼承一樣的花哨的東西(你可以繼承靜態(tài)/類方法!),或者在類中引用你的類的名字的想法對你來說似乎是錯誤的,請檢查介紹我鏈接。
總結
以上是生活随笔為你收集整理的python中类变量的访问方式_在Python中,如何访问类方法中的“静态”类变量的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。