在Python OOP中,你能帮助我理解为什么这些代码不起作用吗



当我运行此代码时,我会收到一条错误消息"AttributeError:"Acrobat"对象没有属性"Stagename"这是一道考试题,代码已作为示例答案提供
我不确定为什么它不起作用,或者我的错误在哪里?

def __init__(self, Firstname, Lastname, Stagename, SecondaryRole, Type):
self.__FirstName = Firstname
self.__LastName = Lastname
self.__StageName = Stagename
self.__SecondaryRole = SecondaryRole
self.__PerfType = Type
def EditSecondaryRole(self, NewRole):
self.SecondaryRole = NewRole

def EditStageName(self, NewStageName):
self.StageName = NewStageName

class Acrobat(Performer):
def __init__(self,Firstname, Lastname, Stagename, SecondaryRole, Fire):
Performer.__init__(self, Firstname, Lastname, Stagename, SecondaryRole, "Acrobat")
self.__UseFire = Fire
def PerformerInfo(self):
ReturnString = "%s (real name %s %s) is %s. " % (self. Stagename, self.Firstname,self. Lastname, Acrobat.PerfType)
if(self.__UseFire):
ReturnString = ReturnString + "Fire is part of %s's act. " % (self.Stagename)
else:
ReturnString = ReturnString + "Fire is not part of %s's act. " %(self.Stagename)
ReturnString = ReturnString + "When not performing, %s is a %s" % (self.Stagename, self.SecondaryRole)
return ReturnString

Acrobat1 = Acrobat("Alex","Tan","Amazing Alex","Popcorn Seller",True)
print(Acrobat1.PerformerInfo()) 

感谢您的帮助-这很有效,但我仍然不确定如何用私有方法回答问题

def __init__(self, Firstname, Lastname, Stagename, Secondaryrole, Type):
self.Firstname = Firstname
self.Lastname = Lastname
self.Stagename = Stagename
self.Secondaryrole = Secondaryrole
self.PerfType = Type
def EditSecondaryRole(self, NewRole):
self.Secondaryrole = NewRole

def EditStageName(self, NewStageName):
self.Stagename = NewStageName

class Acrobat(Performer):
def __init__(self,Firstname, Lastname, Stagename, Secondaryrole, Fire):
Performer.__init__(self, Firstname, Lastname, Stagename, Secondaryrole, "Acrobat")
self.__UseFire = Fire

def PerformerInfo(self):
ReturnString = "%s (real name %s %s) is %s. " % (self.Stagename, self.Firstname,self. Lastname, "Acrobat")
if(self.__UseFire):
ReturnString = ReturnString + "Fire is part of %s's act. " % (self.Stagename)
else:
ReturnString = ReturnString + "Fire is not part of %s's act. " %(self.Stagename)
ReturnString = ReturnString + "When not performing, %s is a %s" % (self.Stagename, self.Secondaryrole)
return ReturnString
Performer1 = Performer("Paul","Smith","Smithy","Greeter","Clown")
Acrobat1 = Acrobat("Alex","Tan","Amazing Alex","Popcorn Seller",False)
print(Acrobat1.PerformerInfo())

最新更新