2013-03-07 73 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