我似乎无法在主程序中正确调用我的方法

时间:2019-06-03 01:02:54

标签: python

好的,我正在制作一个超级英雄,但我需要用main调用我的方法。有人告诉我它不在正确的位置,我是在一段时间之前编写此代码的,现在似乎无法正确获取它。

我尝试制作一种新方法,并最终将其命名为与属性相同的名称。

class Superhero:

    def __init__(self, name = "", strengthPts = 0, staminaPts = 0, stylePts = 0, firstPunch = 0):
        self.name = name 
        self.strengthPts = strengthPts
        self.staminaPts = staminaPts
        self.stylePts = stylePts
        self.firstPunch = firstPunch

    def addStrengthPts(self, points):
        self.strengthPts = self.strengthPts + points

    def addstaminaPts(self, points):
        self.staminaPts = self.staminaPts + points

    def addstylePts(self, points):
        self.stylePts = self.stylePts + points

    def firstPunch(self):

        if(self.firstPunch == "-45 Points"):
            print("First Punch!")
        else:
            print("Miss")

def main():

    theHero = theHero("Eternal", "75", "50", "100", "-45 Points")

    print("Name: " + theHero.name)
    print("Strength Points: " + str(theHero.strengthPts))
    print("Stamina Points: " + str(theHero.staminaPts))
    print("Stle Points: " + str(theHero.stylePts))
    print("-----------------------------")
    print("Hit: " + str(theHero.firstPunch))

main()

预期的结果是打孔处理的数量是“ -45”,但是我得到的是;我从未见过的“ UnboundLocalError:在第28行分配之前引用了本地变量'theHero'。

2 个答案:

答案 0 :(得分:0)

如果您在Python中使用class(在您的情况下为SuperHero)并且拥有__init__函数,则需要先对其进行初始化。

如果您想创建一个新的英雄,假设他的名字叫乔希(Josh),您需要这样做:

josh = SuperHero("Eternal", "75", "50", "100","-45 Points")

Josh现在是您可以使用的SuperHero对象:

josh.addstylePts(42)  # Example of using one of the class functions

答案 1 :(得分:0)

实际上,您不是在创建类Superhero的对象,而是要调用实际上是变量且未分配的函数,这就是为什么出现错误{{1} } ....

因此,您唯一需要更改的就是创建UnboundLocalError: local variable 'theHero' referenced before assignment on line 28对象,而不是调用未分配的变量...

Superhero