2012-06-27 18 views
12

私は、静的メソッドから静的変数にアクセスしたい:メソッドにgrrrrを通過せずにそれを行うにはどのようにアクセス静的変数

#!/usr/bin/env python 
class Messenger: 
    name = "world" 
    @staticmethod 
    def get_msg(grrrr): 
     return "hello " + grrrr.name 

print Messenger.get_msg(Messenger) 

?これは真のOOP ..ですnameまたはself.nameなどの

何が動作していないようだ?

NameError: global name 'name' is not defined 

NameError: global name 'self' is not defined 

答えて

14

は使用@classmethodの代わり@staticmethod。質問を書いた直後にそれを見つけました。多くの言語(C++、Java(登録商標)等)で

は、 "静的" と "クラス" 方法は同義語です。 Not in Python.

8
def get_msg(): 
    return "hello " + Messenger.name 

自己が定義されていないため、self.nameを使用することはできません。 selfは、非静的メソッドまたは非クラスメソッドメソッドの最初のパラメータの命名規則です。メソッドを呼び出したオブジェクトを指します。メソッドは静的なので、呼び出すためのオブジェクトは必要ありません。