2010-05-14 1 views
1

у меня есть следующий классполучает глобальное имя не определено ошибка

class notify(): 
    def __init__(self,server="localhost", port=23053): 
     self.host = server 
     self.port = port 
     register = gntp.GNTPRegister() 
     register.add_header('Application-Name',"SVN Monitor") 
     register.add_notification("svnupdate",True) 
     growl(register)  

    def svn_update(self, author="Unknown", files=0): 
     notice = gntp.GNTPNotice() 
     notice.add_header('Application-Name',"SVN Monitor") 
     notice.add_header('Notification-Name', "svnupdate") 
     notice.add_header('Notification-Title',"SVN Commit") 
     # notice.add_header('Notification-Icon',"") 
     notice.add_header('Notification-Text',Msg) 
     growl(notice) 

    def growl(data): 
     s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
     s.connect((self.host,self.port)) 
     s.send(data) 
     response = gntp.parse_gntp(s.recv(1024)) 
     print response 
     s.close()  

но когда-либо я стараюсь использовать этот класс с помощью происходит некорректно кода я получаю NameError: global name 'growl' is not defined

from growlnotify import * 
n = notify() 
n.svn_update() 

кто имеет представление о том, что здесь происходит?

веселит Nash

ответ

3

Экземпляр область не найдены как часть разрешения области видимости в Python. Если вы хотите вызвать метод на self, вы должны указать его на ссылку self.

self.growl(register) 
1

growl не является глобальным символом, он является членом notify класса.

Внутри notify класса, вызовите метод growl следующим образом:

self.growl(notice)