2013-03-07 80 views
0

從另一個靜態方法訪問靜態方法變量面對錯誤爲:在同級別

AttributeError: 'function' object has no attribute 'd'. 

如何訪問字典?

代碼:

class A: 
    @staticmethod 
    def test(): 
     d = {} 
     d['a'] = 'b' 
     print d 
    @staticmethod 
    def test1(): 
     d1 = {} 
     d1['a'] = 'c' 
     if (A.test.d['a'] == A.test1.d1['a']): 
      print "yes" 

     else: 
      print "Oh No!!" 
A.test() 
A.test1() 

回答

1

在Python的靜態變量的事退房this

無論何時希望使用靜態變量,您都應該能夠使用A.d和A.d1對其進行排序。請注意,正如您所擁有的那樣,它們分別在本地進行測試和測試1。如果你希望它們是靜態的,你必須在類作用域內聲明它們,但不能在任何函數定義中聲明它們。

+0

謝謝,因爲你告訴我已經宣佈它爲局部變量,butt在聲明爲全局變量之外的函數之後,但在類內部並通過Ad ['a'] == d1 [' a']而不是上面提到的代碼及其工作正常。 – thor 2013-03-07 08:27:37

+0

小心將答案標記爲已接受?謝謝! – snowingheart 2013-03-07 17:36:19

+1

@thor如果此答案解決了您的問題,則應通過單擊旁邊的複選標記來接受此問題。這會讓其他遇到類似問題的人知道答案可能也會對他們有幫助。它也會獎勵發佈它的人幫助你的努力。 – itsjeyd 2014-04-09 16:45:20