UnboundLocalError:在类属性声明中获取异常

时间:2019-05-12 13:55:00

标签: python oop

class Human:
    population = 0
    def __init__(self, name, age, gender):
        self.name = name
        self.age = age
        self.gender = gender
        population += 1

human = Human("Name", 12, "M")
print(Human.population)

上面的代码引发UnboundLocalError异常。 完整声明: UnboundLocalError: local variable 'population' referenced before assignment

如何解决此问题?

2 个答案:

答案 0 :(得分:3)

人类是类属性,可通过类中的Human.population访问

可以在课堂外通过human.populationHuman.population来访问

class Human:
    population = 0
    def __init__(self, name, age, gender):
        self.name = name
        self.age = age
        self.gender = gender
        #Access class attribute via ClassName inside class definition
        Human.population += 1

human = Human("Name", 12, "M")
#Access class attribute via ClassName outside class definition
print(Human.population)
#Access class attribute via Class instance outside class definition
print(human.population)

输出将为

1
1

答案 1 :(得分:1)

  

类变量基本上是该类使用的变量,它们是静态

要了解更多信息,可以查看此wikipedia page

  

要使用类变量,您基本上必须输入类的名称,点和变量的名称

在您的情况下,类别为人类,变量为人口。因此答案应该是 Human.population + = 1 ,而不是 population + = 1

仅需使用 Human.population

即可在课堂外使用