缺少1个必需的位置参数:“自我”,如何摆脱这种情况

时间:2019-12-06 10:16:41

标签: python oop inheritance

这是代码,何时需要运行它。错误提示您“缺少1个必需的位置参数:'self'”

class Performer:
    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, UseFire):
        super().__init__()
        self.UseFire = UseFire
    def PerformerInfo(self):
        ReturnString = print(self.FirstName + "Superstar (real name" + self.FirstName + self.LastName + ") is an acrobat.")
        if self.UseFire == True:
            print("Fire is part of" + self.FirstName + "Superstar's act.")
        else:
            self.UseFire == False
            print("Fire is not a part of" + self.FirstName + "Superstar's act.")
        print("When not performing, " + FirstName + "Superstar is a set changer")       
class Clown(Performer):
    pass
class Aerial(Performer):
    pass
Acrobat.PerformerInfo()

1 个答案:

答案 0 :(得分:0)

您可以将Acrobat.PerformerInfo()更改为Acrobat().PerformerInfo(),因为Acrobat是一种类型,而不是对象

这是您的完整代码

class Performer:
    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, UseFire):
        super().__init__()
        self.UseFire = UseFire
    def PerformerInfo(self):
        ReturnString = print(self.FirstName + "Superstar (real name" + self.FirstName + self.LastName + ") is an acrobat.")
        if self.UseFire == True:
            print("Fire is part of" + self.FirstName + "Superstar's act.")
        else:
            self.UseFire == False
            print("Fire is not a part of" + self.FirstName + "Superstar's act.")
        print("When not performing, " + FirstName + "Superstar is a set changer")       
class Clown(Performer):
    pass
class Aerial(Performer):
    pass
Acrobat().PerformerInfo()