Волшебства не происходит!__init__
методы работают так же, как и все остальные.Вам нужно явно взять все необходимые аргументы в инициализаторе подкласса и передать их суперклассу.
class Superclass(object):
def __init__(self, arg1, arg2, arg3):
#Initialise some variables
#Call some methods
class Subclass(Superclass):
def __init__(self, subclass_arg1, *args, **kwargs):
super(Subclass, self).__init__(*args, **kwargs)
#Call a subclass only method
При вызове Subclass(arg1, arg2, arg3)
Python просто вызовет Subclass.__init__(<the instance>, arg1, arg2, arg3)
.Он волшебным образом не попытается сопоставить некоторые аргументы с суперклассом, а некоторые с подклассом.