Python local variable referenced before assignment
我正在试图找出我的代码在这里继续做错了什么。我已经尝试通过删除主功能之后的所有内容来更改第二部分。思想?
我得到以下错误
Traceback (most recent call last): File
"file", line
1, in import petspgm File
"file", line
39, in main() File
"file", line
34, in main print('Pet Name: ', pets.get_pet_name)
builtins.UnboundLocalError: local variable 'pets' referenced before
assignment –
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | import petspgm def main(): #Get a list of pet objects. pets = make_list() #Display the data in the list. print('Here is the data you entered: ') display_list(pets) #This function gets data from the user for 3 pets. It returns a list of pet #objects containing the data. def make_list(): #Create an pet_list = [] #Add three pet objects to the list print('Enter the data for 3 pets.') for count in range(1, 3): #Get the pet data print("Pet number" + str(count) +":") pet_name = input("Enter your pet's name:") pet_type = input("Enter the type of pet:") pet_age = float(input("Enter the pet's age:")) #Create a new PetData object in memory and assign it to the pet variable. pet = petspgm.PetData(pet_name, pet_type, pet_age) #Add the object to the list. pet_list.append(pet) #Return the list. return pet_list #This function accepts a list containing PetData objects as an argument and def pet_list(): #displays the data stored in each object. display_list(pet_list) for item in pet_list: print("Pet's name is:" + item.get_pet_name()) print("Pet's type is :" + item.get_pet_type()) print("Pet's age is :" + item.get_pet__age()) #Call the main function main() |
下面是代码的另一半:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | class PetData(object): def __init__(self, name, animal_type, age): self.__pet_name = pet_name self.__pet_type = pet_type self.__pet_age = pet_age def set_name(self, name): self.__pet_name = pet_name def set_type(self, animal_type): self.__pet_type = pet_type def set_age(self, age): self.__pet_age = pet_age def get_name(self): return self.__pet_name def get_animal_type(self): return self.__pet_type def get_age(self): return self.__pet_age # The main function def main(): # Prompt user to enter name, type, and age of pet name = input('What is the name of the pet: ') animal_type = input('What type of pet is it: ') age = int(input('How old is your pet: ')) print('This will be added to the records. ') print('Here is the data you entered:') print('Pet Name: ', pets.get_pet_name) print('Animal Type: ', pets.get_pet_type) print('Age: ', pets.get_pet_age) pets = Pet(name, animal_type, age) main() |
在主要方面:
1 2 3 4 5 6 | print('This will be added to the records. ') print('Here is the data you entered:') print('Pet Name: ', pets.get_pet_name) print('Animal Type: ', pets.get_pet_type) print('Age: ', pets.get_pet_age) pets = Pet(name, animal_type, age) |
在实际初始化/声明宠物值之前,先打印它。我想你想要:
1 2 3 4 5 6 | pets = Pet(name, animal_type, age) print('This will be added to the records. ') print('Here is the data you entered:') print('Pet Name: ', pets.get_pet_name) print('Animal Type: ', pets.get_pet_type) print('Age: ', pets.get_pet_age) |