【发布时间】:2017-08-08 05:04:45
【问题描述】:
class GameCharacter(object):
__name = ""
__health = 0
__experience = 0
def __init__(self, name, health, experience):
self.__name = name
self.__health = health
self.__experience = experience
def getName(self):
return self.__name
def adventure( e ):
self.__experience += e
def __str__(self):
return self.__name+ " is a " + str(type(self)) + " with: \n HEALTH: " \
+ str(self.__health) + " and EXPERIENCE: " + str(self.__experience)
gc = GameCharacter("gc", 10, 20)
print(gc)
class Wizard(GameCharacter):
__spells = {}
__knowledge = 0
def __init__(self, name, health, experience, spells, knowledge):
super().__init__(name, health, experience)
self.__spells = spells
self.__knowledge = knowledge
def __str__(self):
return (super().__str__() + "\n SPELLS: " + str(self.__spells) \
+ " and KNOWLEDGE: " + str(self.__knowledge))
def learn( k ):
self.__knowledge += k
# This method returns damage amount which is calculated as follows:
# select a random spell from the dictionary of spells using
# the knowledge value as the range, damage = potency of spell
def castSpell():
#?????
pass
class Warrior(GameCharacter):
__weapons = {}
__skill = 0
def __init__(self, name, health, experience, spells, skill):
pass
def __str__(self):
return "This needs to be implemented..."
#this method updates the value of __skill by s
def train( s ):
pass
# This method returns damage amount which is calculated as follows:
# select a random weapon from the dictionary of weapons using
# the skill value as the range, damage = strength of weapon
def useWeapon():
pass
wiz1 = Wizard("Wizzy", 100, 50, {}, 5 )
print(wiz1)
warr1 = Warrior("Warry", 100, 75, {}, 10)
print (warr1)
class AdventureGame():
#initializes the game characters
def __init__(self, wizard, warrior):
pass
#returns a string representing information about the game characters
def __str__(self):
pass
#generates a random number in range 0-5 for wizard: wizard gains knowledge by this much
#generates a random number in range 0-5 for warrior: warrior gains strength by this much
def adventure(self):
pass
#generates a random number in range 0-5 for wizard: wizard loses knowledge by this much
#generates a random number in range 0-5 for warrior: warrior loses strength by this much
def peril(self):
pass
#wizard casts a spell
#warrior draws a weapon
#return the winner - who has more health, or tie --> wizard|warrior|tie
def battle(self):
pass
我试图将此代码编译到 py 2.7.11 但它给出了这个输出
gc is a <class '__main__.GameCharacter'> with:
HEALTH: 10 and EXPERIENCE: 20
Traceback (most recent call last):
File "C:/Users/Muhammad Danial/Desktop/sample.py", line 76, in <module>
wiz1 = Wizard("Wizzy", 100, 50, {}, 5 )
File "C:/Users/Muhammad Danial/Desktop/sample.py", line 34, in __init__
super().__init__(name, health, experience)
TypeError: super() takes at least 1 argument (0 given)
这里有人指出我的错误。我认为代码中缺少部分。可能是用最新版本编写的导致此错误。我试图在 super 中传递参数,但每次都遇到一种新的错误。
【问题讨论】:
-
你在
super987654324@中尝试传递什么样的参数 -
试图通过本地
-
我应该传递什么样的参数以及获得所需输出的参数是多少?
-
为什么要使用 Python 2 而不是 Python 3 进行新开发?
-
__name、__health等类属性在__init_方法中被实例属性所遮蔽,它们的意义何在?你为什么使用name mangling?
标签: python typeerror superclass