TypeError:__init __()接受2个位置参数,但是给了3个Python 3?

时间:2019-05-11 16:04:28

标签: python

我无法弄清楚是什么原因导致了这个奇怪的错误。在我看来,我提供了正确数量的args,但我不知道为什么会遇到这样的异常。

class FileParser(object):

    def __init__(self,file_name,category):
        self.file_name=file_name
        self.category=category



class SchoolParser(FileParser):

    def __init__(self,file_name,category):
        FileParser.__init__(self,file_name,category)

views.py

schoolparser = SchoolParser(file_name,category)

日志

 schoolparser = SchoolParser(file_name,category)
TypeError: __init__() takes 2 positional arguments but 3 were given

1 个答案:

答案 0 :(得分:0)

我没有得到这个错误,但是是另一个错误。这是因为在创建类之后,您需要使用一个对象实例化它,在您的情况下,该对象将是文件名和类别的名称。

>>>class FileParser(object):
       def __init__(self,file_name,category):
           self.file_name=file_name
           self.category=category

   class SchoolParser(FileParser):
       def __init__(self,file_name,category):
           FileParser.__init__(self,file_name,category)

>>>schoolparser = SchoolParser(file_name,category)

   NameError: name 'file_name' is not defined

这是因为我没有使用适当的参数实例化该类。做到了:

>>>schoolparser = SchoolParser('banana', 'fruit')

   <__main__.SchoolParser at 0x1bf159ed860>

希望有帮助。