21

静的メソッドから静的変数にアクセスしたい:

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

print Messenger.get_msg(Messenger)

メソッドに渡さずにそれを行うgrrrr方法は? これは本当の OOP ですか? ...

次のようなものname、またはself.name機能していないように見えるもの:

NameError: global name 'name' is not defined

NameError: global name 'self' is not defined
4

2 に答える 2

24

@classmethodの代わりに使用し@staticmethodます。質問を書いた直後に見つけました。

多くの言語 (C++、Java など) では、「静的」メソッドと「クラス」メソッドは同義語です。Python ではありません。

于 2012-06-27T19:38:48.663 に答える
16
def get_msg():
    return "hello " + Messenger.name

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

于 2012-06-27T19:46:30.370 に答える