我设置了以下两个类:
class Player:
POINTS_PER_PASSING_YARD = 0.04
POINTS_PER_PASSING_TOUCHDOWN = 4
POINTS_PER_INTERCEPTION = -1
POINTS_PER_RUSHING_YARD = 0.1
POINTS_PER_RUSHING_TOUCHDOWN = 6
POINTS_PER_RUSHING_FUMBLE = -2
POINTS_PER_RECEPTION_YARD = 0.1
POINTS_PER_RECEPTION_TOUCHDOWN = 6
def __init__(self, name, team, rushingYards, rushingTouchdowns, rushingFumbles):
self.name = name
self.team = team
self.rushingYards = rushingYards
self.rushingTouchdowns = rushingTouchdowns
self.rushingFumbles= rushingFumbles
def calculatePoints(self):
return self.rushingYards * POINTS_PER_RUSHING_YARD + self.rushingTouchdowns * POINTS_PER_RUSHING_TOUCHDOWN + self.rushingFumbles * POINTS_PER_RUSHING_FUMBLE
def toString(self):
return "name: " + self.name + " team: " + self.team + " passing yards: " + self.passingYards + " rushing yards: " + self.rushingYards + " touchdowns: " + self.touchdowns + " interceptions: " + self.interceptions
然后我有一个从Player继承的QB类:
从播放器导入*
class QB(Player):
def __init__(self, name, team, rushingYards, rushingTouchdowns, rushingFumbles, passingYards, passingTouchdowns, interceptions, position="QB"):
super().__init__(self, name, team, rushingYards, rushingTouchdowns, rushingFumbles)
self.passingYards = passingYards
self.passingTouchdowns = passingTouchdowns
self.interceptions = interceptions
def toString(self):
return "position: " + self.position + super().toString()
然后在我的主课上,我只做:
myQB = QB("Brees", "Saints", 0, 0, 0, 4952, 33, 17)
print(myQB)
我得到以下错误:
Traceback (most recent call last):
File "main.py", line 35, in <module>
main()
File "main.py", line 32, in main
myQB = QB("Brees", "Saints", 0, 0, 0, 4952, 33, 17)
File "/Users/benjaminclayman/Desktop/Aurora_Fantasy_Football/QB.py", line 5, in __init__
Player.__init__(self, name, team, rushingYards, rushingTouchdowns, rushingFumbles)
TypeError: object.__init__() takes no parameters
但我不知道为什么,因为我写的所有init方法都接受参数。。。你知道吗
知道怎么回事吗?你知道吗
谢谢你, B外行
在Python中,缩进起主要作用。 问题清单: 1)
__init__()
应该在Player类中。否则初始化将无法工作。你知道吗2)其他函数
def calculatePoints(self
)也应该在class Player
中。当前在代码中,它是在类之外定义的。你知道吗3)
def toString(self)
也应该在class Player
之内。你知道吗4)
self.position = position
需要在class QB
中初始化,如下所示:如果第一个脚本中的缩进(使用
Player
类)是正确的,那么这就是问题所在。你知道吗根据您的缩进,
__init__()
方法和其他方法在类Player
之外,因此Player
使用object
类__init__()
,它不接受任何参数(除了self
,尽管我们不需要显式传递它)。你知道吗您可能希望修复缩进,以便所有实例方法(您希望位于
Player
类中)都位于Player
类中。你知道吗示例-
您将需要对所有希望位于
Player
类中的方法执行此操作。你知道吗还有一个问题,您不应该将
self
传递给使用super()
调用的te__init__()
方法。你知道吗示例-
一些问题,首先你需要修复你的压痕。你知道吗
第二,你应该改变
至
另一个问题是,当您调用静态成员时,这是处理它们的方法:
这就是你的上司的样子:
代码如下:
相关问题 更多 >
编程相关推荐