我正在开发需要 str 方法的程序。但是,当我运行代码时,它仅输出:
What is the name of the pet: Tim
What type of pet is it: Turtle
How old is your pet: 6
如何打印出str方法需要的内容? 这就是我所拥有的。 这是我班级的代码(classPet.py)
class Pet:
def __init__(self, name, animal_type, age):
self.__name = name
self.__animal_type = animal_type
self.__age = age
def set_name(self, name):
self.__name = name
def set_type(self, animal_type):
self.__animal_type = animal_type
def set_age(self, age):
self.__age = age
def get_name(self):
return self.__name
def get_animal_type(self):
return self.__animal_type
def get_age(self):
return self.__age
def __str__(self):
return 'Pet Name:', self.__name +\
'\nAnimal Type:', self.__animal_type +\
'\nAge:', self.__age
这是我主要功能(pet.py)的代码:
import classPet
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: '))
pets = classPet.Pet(name, animal_type, age)
print()
main()
答案 0 :(得分:0)
在主函数(pet.py)的代码中,您正在调用不带任何参数的print。您需要将pet实例作为参数调用print:
pets = classPet.Pet(name, animal_type, age)
print(pets) # see here
您还需要修复__str__
方法中的错误:
__str__
方法不会像print()
函数那样将其所有参数连接到字符串。相反,它必须返回一个字符串。
在您的__str__
方法中,您要用逗号分隔字符串的不同部分。这会使python认为它正在处理元组。我使用pythons format
函数提出以下解决方案:
def __str__(self):
return "Pet Name: {}\nAnimal Type: {}\nAge: {}".format(self.__name, self.__animal_type, self.__age)
字符串中的{}
部分是占位符,可通过format
函数用括号中的参数替换。它们是按顺序替换的,因此第一个替换为self.__name
,依此类推。