ошибка получения глобального имени не определена - PullRequest
1 голос
/ 14 мая 2010

у меня есть следующий класс

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()

Кто-нибудь знает, что здесь происходит?

веселит Нэш

Ответы [ 2 ]

3 голосов
/ 14 мая 2010

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

self.growl(register)
1 голос
/ 14 мая 2010

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

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

self.growl(notice)
...