python - 我如何使用 __.init__ 并为 python 做 OOP
问题描述
我是 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
推荐阅读
- sql-server - 使用 node-mssql 时,编码“_sbcs”的“字符”不正确(必须是 len 128 或 256)
- javascript - 传递函数风格的区别
- python - 树莓派 3、OpenCV 和 Picamera
- spring - Spring Boot 2 跨页面国际化
- javascript - 变干了,现在我的代码在 Javascript 中出现了意外的行为
- firebase - 使用 Firebase,我可以跟踪使用夜间模式与日间模式的用户百分比吗?
- regex - `[][]` 如何匹配“[或]”?
- java - 带有 OR AND 运算符的字段表达式验证 Struts 2
- .net - .Net Core Web 应用程序部署到带有服务器错误的 IIS
- javascript - 如何通过 javascript 为 css 代码运行这段代码