簡體   English   中英

Python:函數不帶參數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM