python自定义类不进参数

终端使用命令启动

python client.py urls.txt D:\pythongui http://127.0.0.1:4242

python报错如下

Traceback (most recent call last):
  File "D:\Microsoft VS Code\client.py", line 55, in <module>
    if __name__ == '__main__':main()
  File "D:\Microsoft VS Code\client.py", line 52, in main
    client = Client(url,directory,urlfile)
  File "D:\Microsoft VS Code\client.py", line 27, in __init__
    n = Node(url,dirname,urlfile)
TypeError: Node() takes no arguments

望帮忙解决,谢谢!
源码如下:
自编server库


from xmlrpc.client import ServerProxy,Fault
from os.path import join,abspath,isfile
from xmlrpc.server import SimpleXMLRPCServer
from urllib.parse import urlparse
import sys

SimpleXMLRPCServer.allow_reuse_address = 1

MAX_HISTORY_LENGTH=6

UNHANDLED = 100
ACCESS_DENIED = 200

class UnhandledQuery(Fault):
    def __init__(self, message='Couldn\'t handle the query'):
        super().__init__(UNHANDLED,message)

class AccessDenied(Fault):
    def __init__(self,message='Access denied'):
        super().__init__(ACCESS_DENIED,message)

def inside(dir, name):
    dir=abspath(dir)
    name=abspath(name)
    return name.startswith(join(dir,''))

def get_port(url):
    name=urlparse(url)[1]
    parts=name.split(':')
    return int(parts[-1])

class Node:
    def _init_(self,url,dirname,secret):
        self.url = url
        self.dirname = dirname
        self.secret = secret
        self.know = set()
    
    def query(self,query,history=[]):
        try:
            return self._handle(query)
        except UnhandledQuery:
            history = history + [self.url]
            if len(history)>=MAX_HISTORY_LENGTH:raise
            return self._broadcast(query,history)

def hello(self,other):
    self.known.add(other)
    return 0

def fetch(self,query,secret):
    if secret != self.secret:raise AccessDenied
    result=self.query(query)
    f=open(join(self.dirname,query),'w')
    f.write(result)
    f.close()
    return 0

def _start(self):
    s=SimpleXMLRPCServer(('',get_port(self.url)),logRequests=False)
    s.register_instance(self)
    s.serve_forever()

    def _handle(self,query):
        dir = self.dirname
        name = join(dir,query)
        if not isfile(name): raise UnhandledQuery
        if not isfile(dir,name):raise AccessDenied
        return open(name).read()
    
    def _broadcast(self,query,history):
        for other in self.known.copy():
            if other in history:continue
            try:
                s=ServerProxy(other)
                return s.query(query,history)
            except Fault as f:
                if f.faultCode == UNHANDLED:pass
                else: self.known.remove(other)
            except:
                self.known.remove(other)
        raise UnhandledQuery
def main():
    url,directory,secret=sys.argv[1:]
    n=Node(url,directory,secret)
    n._start()

if __name__ == '_main_':main()

主程序:

from xmlrpc.client import ServerProxy,Fault
from cmd import Cmd
from random import choice
from string import ascii_lowercase
from server import Node,UNHANDLED
from threading import Thread
from time import sleep
import sys

HEAD_START = 0.1
SECRET_LENGTH = 100

def random_string(length):
    chars=[]
    letters=ascii_lowercase[:26]
    while length > 0:
        length -= 1
        chars.append(choice(letters))
    return ''.join(chars)

class Client(Cmd):
    prompt = '>'

    def __init__(self,url,dirname,urlfile):
        Cmd.__init__(self)
        self.secret = random_string(SECRET_LENGTH)
        n = Node(url, dirname, self.secret)
        t = Thread(target=n._start)
        t.daemon(1)
        t.start()
        sleep(HEAD_START)
        self.server = ServerProxy(url)
        for line in open(urlfile):
            line = line.split()
            self.server.hello(line)

    def new_method(self, url, dirname, urlfile):
        return url,dirname,urlfile

    def do_fetch(self,arg):
        try:
            self.server.fetch(arg,self.secret)
        except Fault as f :
            if f.faultCode != UNHANDLED :raise
            print('Could\'t find the file',arg)

    def do_exit(self,arg):
        "退出程序"
        print()
        sys.exit()

    do_EOF = do_exit

def main():
    urlfile,directory,url = sys.argv[1:]
    client = Client(url,directory,urlfile)
    client.cmdloop()

if __name__ == '__main__':main()

两边各两个下划线,你的node的init下划线不够数