首页 > 解决方案 > 我如何使用 __.init__ 并为 python 做 OOP

问题描述

我是 Python 和 OOP 的新手。我以前用过程编程风格做过 python。

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

  1. __name(宠物的名字)
  2. __animal_type(用于宠物的类型,例如 Dog、Cat)
  3. __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()))

标签: pythonoop

解决方案


您正在调用 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

推荐阅读