我有以下课程
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()
任何人都知道这里发生了什么?
欢呼声 纳什
答案 0 :(得分:3)
在Python中,不会将实例范围作为范围解析的一部分进行搜索。如果您想在self
上调用某个方法,则必须在其前面添加self
的引用。
self.growl(register)
答案 1 :(得分:1)
growl
不是全局符号,它是notify
类的成员。
在notify
类中,按如下方式调用growl
方法:
self.growl(notice)