2012-06-27 11 views
12

voglio accedere a una variabile statica da un metodo statico:Accesso variabile statica dal metodo statico

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

print Messenger.get_msg(Messenger) 

come farlo senza passare grrrr a un metodo? E 'questo il vero OOP ..

Qualcosa di simile name o self.name sembra non lavorare:?

NameError: global name 'name' is not defined 

e

NameError: global name 'self' is not defined 

risposta

14

Uso @classmethod invece di @staticmethod. L'ho trovato subito dopo aver scritto la domanda.

In molti linguaggi (C++, Java ecc.) I metodi "statico" e "classe" sono sinonimi. Not in Python.

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

Non è possibile usare self.name perché sé non è definita. self è una convenzione di denominazione per il primo parametro di metodi non-static o non-classmethod. Punta all'oggetto su cui hai chiamato il metodo. Poiché il metodo è statico, non è necessario un oggetto per chiamarlo.