Python 3.x 在python中如何将*args与类继承一起使用?

Python 3.x 在python中如何将*args与类继承一起使用?,python-3.x,class,inheritance,super,args,Python 3.x,Class,Inheritance,Super,Args,我正在创建一个记录历史的软件。它本质上是一个大的时间轴,这样你就可以输入任何人、地点或事物以及日期,它将所有内容组织到一个txt文件中。类“Note”是放入时间轴的任何和所有信息的父级。此类接受以下参数:self、*args、id='default',start_date='iso_date',end_date='iso_date',loc='some location'。 我使用“*args”以便您可以输入关于给定项目的任意数量的信息。 \国家执行: 这是如此简单,我无法打破它。当我专门为书籍

我正在创建一个记录历史的软件。它本质上是一个大的时间轴,这样你就可以输入任何人、地点或事物以及日期,它将所有内容组织到一个txt文件中。类“Note”是放入时间轴的任何和所有信息的父级。此类接受以下参数:self、*args、id='default',start_date='iso_date',end_date='iso_date',loc='some location'。 我使用“*args”以便您可以输入关于给定项目的任意数量的信息。 \国家执行:

这是如此简单,我无法打破它。当我专门为书籍创建子类时,问题就出现了

class Book(Note):
    def __init__(self, *args, id='default', start_date=None, end_date=None, loc='default', author='Jane Doe'):
        super().__init__(self, *args, id=id, start_date=start_date, end_date=end_date, loc=loc)
        self.author = author
我必须在这里使用超级函数,以便它像往常一样初始化,但我仍然可以创建一个新变量“author”。这就是问题所在

PS C:\Users\Max\projects\hist\Hist> py                                        Python 3.7.2 (tags/v3.7.2:9a3ffc0492, Dec 23 2018, 23:09:28) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from objects import Book
>>>
>>> var = Book("It's about a whale.", "There is a captain.", id="Moby Dick", start_date="1851-10-18", loc="Pittsfield, Massachusetts")
>>>
>>> var.id
'Moby Dick'
>>>
>>> var.loc
'Pittsfield, Massachusetts'
>>>
>>> var.author
'Herman Melville'
>>>
>>> var.facts
[<objects.Book object at 0x0000010E08708160>, "It's about a whale.", 'There is a captain.']
>>>
制作此文件:

>>> var.facts
[<objects.Book object at 0x0000017ADA3D8160>, ('There is a captain',)]
>>变量事实
[,(‘有个船长’,)]

我不知道如何放弃那个论点。有人帮帮我,我很笨。

当通过调用父类构造函数时,请注意,
\uuuu init\uuuu
方法已经存在。因此,与调用任何其他绑定方法一样,
self
部分是隐式传递的,不需要是显式参数

也就是说:

class Parent: 
    pass                                                                         

class Child(Parent): 
    def __init__(self): 
        print(super().__init__.__self__) 

c = Child()  
# prints <__main__.Child object at 0x105116e48>

你刚刚解决了一个问题,五分钟内就把我累死了一个小时。我对自己感到恼火,同时也非常高兴它被修复了!非常感谢!
>>> var.facts
[<objects.Book object at 0x0000017ADA3D8160>, ('There is a captain',)]
class Parent: 
    pass                                                                         

class Child(Parent): 
    def __init__(self): 
        print(super().__init__.__self__) 

c = Child()  
# prints <__main__.Child object at 0x105116e48>
super().__init__(*args, id=id, start_date=start_date, end_date=end_date, loc=loc)