我正在使用Python中的OOP,并试图弄清楚一些与继承相关的东西。。我这里有一些代码,其中有几个类。一个名为Blacksmith的类和一个名为Hero的类,我试图从它调用一个函数,但我收到了一个意外的输出。
class Character(object):
def __init__(self,name):
self.health=100
self.name = name
# self.player = player
def printName(self):
print self.name
#def printPlayerName(self):
# print self.player
class Blacksmith(Character):
def __init__(self,name, forgeName):
super(Blacksmith, self).__init__(name)
#self.name = "Billy"
self.forge = Forge(forgeName)
class Hero(Character):
playerName = "Player"
def __init__(self,name):
super(Hero, self).__init__(name)
def setplayername(self,inputplayername):
playerName = inputplayername
class Forge:
def __init__(self,forgeName):
self.name = forgeName
bs = Blacksmith("Billy", "Billy's Forge")
print bs.health
bs.printName()
print bs.forge.name
player1 = Hero("Methos")
print player1.name
player1.setplayername("Chris")
#print playher1.playerName
print player1.playerName
输出为:
raina@DESKTOP-291MTC0 ~/python
$ python learningoopclasses01.py
100
Billy
Billy's Forge
Methos
Player
谁能解释为什么这个输出是"Player“而不是"Chris”。我的另一个问题是,我不完全确定初始化方法是如何工作的。super在这些情况下会做些什么呢?使用name值调用init到底做了什么?谢谢。
https://stackoverflow.com/questions/51583944
复制相似问题