我是Python和OOP的新手。我以前已经以程序编程风格完成了python的工作。

我需要编写一个名为Pet的类,该类应具有以下数据属性:


 __name(代表宠物的名字)
 __animal_type(用于宠物的类型,例如Dog,Cat)
 __age(针对宠物的年龄)

它应包含创建这些属性的__init__初始化程序。它也应该有
所有的mutator和accessor方法。编写一个程序来创建一个对象
并提示用户输入宠物的名称,类型和年龄。在末尾
程序,在屏幕上显示宠物的名称,类型和年龄。样本输出为
如下。

Enter Pet Name: Lucky
Enter Pet Type: Dog
Enter Pet Age: 5

Pet Lucky is a dog, and it is 5 years old



这是我到目前为止所做的(它没有在我的cmd上运行,没有错误代码)

class Pet:
    def set_name(self, name):
        self.__name = name

    def set_animal_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

name = input("Enter pet name: ")
animal_type = input("Enter pet type: ")
age = input("Enter pet age: ")


p = Pet()
p.set_name(name)
p.set_animal_type(animal_type)
p.set_age(age)

print("Pet %s is a %s ,and it is %s years old." %(p.set_name(), p.set_animal_type(), p.set_age()))

最佳答案

您正在调用setter而不是getter
如下更改打印行

print("Pet %s is a %s ,and it is %s years old." %(p.get_name(), p.get_animal_type(), p.get_age()))


另外,添加缺少的init方法

    def __init__(self, name, animal_type, age):
        self.name = name
        self.animal_type = animal_type
        self.age = age

08-18 04:52