在赋值之前引用的局部变量"age"

fah*_*eem 1 python variables

我最近开始学习python.我正在解决一个问题.

class Person:
    age = 0
    def __init__(self,initial_Age):
        if initial_Age<0:
            age=0
            print("This person is not valid, setting age to 0.")
        else:
            age = initial_Age

    def amIOld(self):
        if(age<13):
            print("You are young.")
        elif(age>=13 and age<18):
            print("You are a teenager.")
        else:
            print("You are old.")
    def yearPasses(self):
        age = age + 1
T=int(input())
for i in range(0,T):
age=int(input())         
p=Person(age)  
p.amIOld()
for j in range(0,3):
    p.yearPasses();        
p.amIOld();
print ("") 
Run Code Online (Sandbox Code Playgroud)

我得到的错误显示如下:

Traceback (most recent call last):
File "solution.py", line 27, in <module>
p.yearPasses();        
File "solution.py", line 19, in yearPasses
age = age + 1 
UnboundLocalError: local variable 'age' referenced before assignment
Run Code Online (Sandbox Code Playgroud)

对此的输入如下:

4(Number of test cases)
-1
10
16
18
Run Code Online (Sandbox Code Playgroud)

输出必须是这样的:

This person is not valid, setting age to 0.
You are young.
You are young.

You are young.
You are a teenager.

You are a teenager.
You are old.

You are old.
You are old.
Run Code Online (Sandbox Code Playgroud)

你能指导我做错吗?谢谢

Dan*_*iel 6

在python中,您必须显式使用self才能访问实例属性:

class Person:
    def __init__(self, initial_Age):
        if initial_Age < 0:
            self.age = 0
            print("This person is not valid, setting age to 0.")
        else:
            self.age = initial_Age

    def amIOld(self):
        if self.age<13:
            print("You are young.")
        elif self.age>=13 and self.age<18:
            print("You are a teenager.")
        else:
            print("You are old.")

    def yearPasses(self):
        self.age += 1
Run Code Online (Sandbox Code Playgroud)