[英]Wrong number of arguments passed python 3
我有一个带有2到3个参数的类,但是当我传递1时,它说只传递了1;但是当我传递2时,它说已经传递了四个。
码:
class GiantWarren(Warren):
def __init__(self, Variability, RabbitCount):
self.__MAX_RABBITS_IN_WARREN = 200
super(GiantWarren, self).__init__(Variability, RabbitCount, self.__MAX_RABBITS_IN_WARREN)
self.__RabbitCount = RabbitCount
def NeedToCreateNewWarren(self):
if self.__RabbitCount == self.__MAX_RABBITS_IN_WARREN:
return True
else:
return False
被称为:
self.__Landscape[11][4].GiantWarren = GiantWarren(self.__Variability, 115)
给出错误
超级(巨人战争,自我)。 init ( 变量 ,RabbitCount,自身。MAX_RABBITS_IN_WARREN)TypeError:__ init ()接受2到3个位置参数,但给出了4个
class Warren: def __init__(self, Variability, RabbitCount = 0): self._MAX_RABBITS_IN_WARREN = 99 self._RabbitCount = RabbitCount self._PeriodsRun = 0 self._AlreadySpread = False self._Variability = Variability
在GiantWarren
类对超类的GiantWarren
,您做到了:
super(GiantWarren, self).__init__(Variability, RabbitCount, self.__MAX_RABBITS_IN_WARREN)
即使用4个参数(请注意,当前实例(即self
是隐式传递的)。
但是Warren
类的构造函数具有签名:
def __init__(self, Variability, RabbitCount = 0):
也就是说,它需要3个参数,包括实例在内。 在另外2个参数中,一个参数是位置参数(强制性),另一个是具有默认值的关键字(可选)。
因此,从命名看来, super
调用中的self.__MAX_RABBITS_IN_WARREN
参数是多余的。 如果没有,请按照自己的方式修复。
顺便说一句 ,请尝试遵循PEP-8,将您的类CamelCase和函数/变量命名为snake_case 。
通过GiantWarren传递的参数过多。 您传递4个参数(包括self):
super(GiantWarren, self).__init__(Variability, RabbitCount, self.__MAX_RABBITS_IN_WARREN)
...而Warren的构造函数最多需要3个,包括self:
def __init__(self, Variability, RabbitCount = 0):
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.