我是一個完整的Python n00b在這裏,只是試圖搗碎幾個位在一起,使一個項目的工作,但我掙扎着一些我認爲的語法。從每個循環Python未定義函數
這裏是我的劇本我到目前爲止有:
#!/usr/bin/env python
from plugin import *
from siriObjects.systemObjects import ResultCallback
import uuid
import json
import random
import types
import urllib
import urllib2
import random
import re
import select
import socket
import struct
import sys
import thread
import time
class tivoRemote(Plugin):
tivo_address = '192.168.0.9'
tivo_name = ''
tivo_swversions = {}
have_zc = True
captions_on = False
sock = None
outer = None
def connect():
""" Connect to the TiVo within five seconds or report error. """
global sock
try:
sock = socket.socket()
sock.settimeout(5)
sock.connect((tivo_address, 31339))
sock.settimeout(None)
except Exception, msg:
msg = 'Could not connect to %s:\n%s' % (tivo_name, msg)
print(msg)
def send(message):
""" The core output function, called from irsend(). Re-connect if
necessary (including restarting the status_update thread), send
message, sleep, and check for errors.
"""
if not sock:
self.connect()
thread.start_new_thread(status_update,())
try:
sock.sendall(message)
time.sleep(0.1)
except Exception, msg:
error_window(str(msg))
def irsend(*codes):
""" Expand a command sequence for send(). """
for each in codes:
self.send('IRCODE %s\r' % each)
@register("en-US", ".*Change.*Channel.*")
def channelChanger(self, speech, language, matchedRegex):
if language == 'en-US':
answer = self.ask(u"Which channel would you like?")
self.say(u"Ok, one moment..".format(answer))
self.connect()
self.irsend(answer)
self.complete_request()
,我得到的錯誤是:
Traceback (most recent call last):
File "/home/pi/SiriServerCore/plugin.py", line 150, in run
self.__method(self, self.__speech, self.__lang, self.__method.__dict__[__criteria_key__][self.__lang].match(self.__speech))
File "/home/pi/SiriServerCore/plugins/tivoRemote/__init__.py", line 70, in channelChanger
self.irsend(format(answer))
File "/home/pi/SiriServerCore/plugins/tivoRemote/__init__.py", line 61, in irsend
self.send('IRCODE %s\r' % each)
NameError: global name 'self' is not defined
如果我刪除了 '自我'。我得到同樣的錯誤,但說'發送'沒有定義。
預先感謝任何幫助:) 瑞安
我看到一個調用堆棧,但沒有錯誤。你能否用錯誤更新你的問題? :) – 2012-07-18 15:39:29
不應該類方法有'self'作爲第一個參數? – 2012-07-18 15:39:44
@LevLevitsky:不,但實例方法應該。 – geoffspear 2012-07-18 15:40:01