[英]Python:Function takes no arguments
當我運行此代碼時,我收到錯誤消息:
File "Start.py", line 22, in <module>
c.lo()
TypeError: lo() takes no arguments (1 given)
我不知道為什么我會收到這個錯誤,有人可以解釋一下嗎? 我知道這是說我在調用該函數時提出了一個參數,但我不明白為什么會這樣?
如果有人可以對這個問題有所了解,那就太好了。
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()
方法總是將實例作為第一個參數。
您的方法定義應如下所示:
def some_method(self):
# do_stuff
簡而言之,這是因為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()
調用有效; 它有同樣的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.