在另一个类函数中调用类函数

时间:2018-02-20 04:28:53

标签: python class

我试图用Python中的另一个类函数调用一个函数。但是,我收到的错误是未定义全局name。我不知道该怎么办,因为我无法弄清楚这是什么问题。 错误是:

NameError: global name 'sendCmdWaitForRaffleResponse' is not defined

这是我写的代码:

Class T:
    def connect(self,ipAddr,portNum):
      try:
           print "Check1"
           s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)

           s.connect((ipAddr,portNum))
           s.settimeout(1000*30)

           response=s.recv(8192)
           print response



           cmd="some command"
           s.send(cmd)
           print 'check'
           response=s.recv(1024)

           print response
           #time.sleep(5)
      except Exception as e:
           print e
  def Send(self,command):
         result ="ok"
         try:
             print "start"
             if command.startswith("#"):
               #print result
               return result

             elif not command:
                 return result

             print 'yes'
             result=sendCmdWaitResponse(command)

         except Exception as e:
             print (e)

         return result

  def sendCmdWaitResponse(self,cmd):
          print "Running"
          s.send(cmd)
          while true:
              response=s.recv(1024)
              response=+ '\n'
              print response

          print "Leaving"
          return sb.getvalue()

if __name__ == "__main__":

 test=T()
 a='some command'
 test.Connect(ipaddr,port)
 test.Send(a)

3 个答案:

答案 0 :(得分:0)

你需要自我。

         result=self.sendCmdWaitResponse(command)

答案 1 :(得分:0)

更改

result=sendCmdWaitResponse(command)

result=self.sendCmdWaitResponse(command)

答案 2 :(得分:0)

您的代码似乎有很多拼写错误:这是我所做的修复。我不知道你的预期产量是多少。请添加有效代码:

import socket
class T():

    def __init__(self, ipAddr, portNum):
        self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    def connect(self,ipAddr,portNum):
      try:
           print "Check1"
           s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

           s.connect((ipAddr,portNum))
           s.settimeout(1000*30)

           response=s.recv(8192)
           print response

           cmd="some command"
           s.send(cmd)
           print 'check'
           response=s.recv(1024)

           print response
       #time.sleep(5)
    except Exception as e:
      print e

   def Send(self, command):
     result ="ok"
     try:
         print "start"
         if command.startswith("#"):
           #print result
           return result

         elif not command:
             return result

         print 'yes'
         result= self.sendCmdWaitResponse(command)

     except Exception as e:
         print (e)

     return result


    def sendCmdWaitResponse(self,cmd):
      print "Running"
      self.s.send(cmd)
      while True:
          response= self.s.recv(1024)
          response=+ '\n'
          print response

      print "Leaving"
      return sb.getvalue()

if __name__ == "__main__":

    a='some command'
    ipAddr = ""

    port = 1000
    test = T(ipAddr, port)
    test.connect(ipAddr,port)
    test.Send(a)