多重继承:采用 0 个位置参数,但给出了 1 个
Multiple Inheritance: takes 0 positional arguments but 1 was given
在测试多重继承时,我有以下日期、时间和日期时间 class 继承关系
class time:
def __init__(self, time):
self.time = time
def getTime():
return self.time;
class date:
def __init__(self, date):
self.date = date
def getDate():
return self.date
class datetime(time,date):
def __init__(self, input_time, input_date):
time.__init__(self, input_time)
date.__init__(self, input_date)
实例化和检查日期工作正常:
my_datetime = datetime("12PM","Today")
my_datetime.date
'Today'
但是运行getDate函数参数错误,我不明白为什么
my_datetime.getDate()
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-17-120ecf58a608> in <module>
----> 1 my_datetime.getDate()
TypeError: getDate() takes 0 positional arguments but 1 was given
您的问题与多重继承问题无关。事实上,尝试在 date
.
的实例上调用 getDate
时,您会得到完全相同的错误
问题的原因是您忘记将 self
列为 getDate
(以及 time.getTime
)的参数。调用该方法的实例将作为第一个位置参数自动传递,因此您需要在编写方法时牢记这一点。
错误是告诉你哪里出了问题。您已将 getDate
定义为不接受任何参数。当您执行 someObject.someMethod()
时,python 会自动将对象实例作为第一个参数传递(几乎普遍命名为 self
)。
如果要在 class 的实例上调用 getDate
,您需要这样定义它:
def getDate(self):
...
在测试多重继承时,我有以下日期、时间和日期时间 class 继承关系
class time:
def __init__(self, time):
self.time = time
def getTime():
return self.time;
class date:
def __init__(self, date):
self.date = date
def getDate():
return self.date
class datetime(time,date):
def __init__(self, input_time, input_date):
time.__init__(self, input_time)
date.__init__(self, input_date)
实例化和检查日期工作正常:
my_datetime = datetime("12PM","Today")
my_datetime.date
'Today'
但是运行getDate函数参数错误,我不明白为什么
my_datetime.getDate()
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-17-120ecf58a608> in <module> ----> 1 my_datetime.getDate() TypeError: getDate() takes 0 positional arguments but 1 was given
您的问题与多重继承问题无关。事实上,尝试在 date
.
getDate
时,您会得到完全相同的错误
问题的原因是您忘记将 self
列为 getDate
(以及 time.getTime
)的参数。调用该方法的实例将作为第一个位置参数自动传递,因此您需要在编写方法时牢记这一点。
错误是告诉你哪里出了问题。您已将 getDate
定义为不接受任何参数。当您执行 someObject.someMethod()
时,python 会自动将对象实例作为第一个参数传递(几乎普遍命名为 self
)。
如果要在 class 的实例上调用 getDate
,您需要这样定义它:
def getDate(self):
...