2012-06-27 6 views
12

Je veux accéder à une variable statique à partir d'une méthode statique:accès variable statique méthode statique

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

print Messenger.get_msg(Messenger) 

Comment le faire sans passer grrrr à une méthode? Est-ce le vrai POO ..

Tout comme name ou self.name semble ne fonctionne pas:

NameError: global name 'name' is not defined 

et

NameError: global name 'self' is not defined 

Répondre

14

Utilisation @classmethod au lieu de @staticmethod. Je l'ai trouvé juste après avoir écrit la question.

Dans de nombreux langages (C++, Java, etc.), les méthodes "static" et "class" sont synonymes. Not in Python.

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

Vous ne pouvez pas utiliser self.name parce que l'auto n'est pas défini. self est une convention de nommage pour le premier paramètre des méthodes non-static ou non-classmethod. Il pointe vers l'objet sur lequel vous avez appelé la méthode. Puisque votre méthode est statique, vous n'avez pas besoin d'un objet pour l'appeler.

Questions connexes