Python:函数不带参数

时间:2013-11-23 19:52:27

标签: python function tkinter arguments subprocess

当我运行此代码时,我收到错误消息:       文件“Start.py”,第22行,in         c.lo()      TypeError:lo()不带参数(给定1个)

我不知道为什么我得到这个错误有人可以解释一下吗? 我知道它说我在调用该函数时提出了一个参数,但我不明白为什么会这样? 如果有人能够对这个问题有所了解,那就太棒了。

import subprocess as sp
import Tkinter as Tk
from Tkinter import *
root = Tk()
text=Text(root)
class Console:
    def Start():
        proc = sp.Popen(["java", "-Xmx1536M", "-Xms1536M", "-jar",".jar"],stdin=sp.PIPE,stdout=sp.PIPE,)
    def lo():
        while True:
            line=proc.stdout.readline()
            text.insert(INSERT,line)
            text.pack()
            if(line=="Read Time Out"):
                proc.stdin.write('stop')
            if(line=="Unloading Dimension"):
                text.insert(INSERT,"Ready for command")
                text.pack()
c=Console()
c.Start()
c.lo()
root.mainloop()

2 个答案:

答案 0 :(得分:2)

方法总是将实例作为第一个参数 您的方法定义应如下所示:

def some_method(self):
    # do_stuff

答案 1 :(得分:1)

简而言之,这是因为lo()是类Console的方法,它始终作为第一个参数传递实例。因此lo()必须定义一个参数(通常称为self)来保存该参数:

class Console:
    def start(self): # functions and methods should have lowercase names
        self.proc = sp.Popen(...)
    def lo(self):
        line = self.proc.stdout.readline()
        ...

我很惊讶你的Start()电话有效;它有同样的问题。