繁体   English   中英

python 3传递了错误的参数数量

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM