【发布时间】:2018-10-07 11:12:43
【问题描述】:
我正在学习 Python,目前正在做课堂练习。有了这个,我不知道出了什么问题。说明是:
编写一个名为 Pets 的类,具有以下属性:
- 姓名
- 类型
- 年龄
它应该有一个 __init__ 方法创建这些属性,还应该有以下方法:
- set_name 为 name 赋值
- set_type 为类型赋值
set_age 为年龄赋值
get_name 返回名称的值
- get_type 返回类型的值
- get_age 返回年龄值
然后,编写一个程序,启动一个对象并提示用户输入姓名、类型和年龄。使用对象的方法查找宠物的名称、类型和年龄,并将其显示在屏幕上。
这是我写的代码:
class Pet():
def __init__(self, name, type, age):
self.name = name
self.type = type
self.age = age
def set_name(self):
name = input("Type in the pet's name: ")
def set_type(self):
type = input("Type in the pet's type: ")
def set_age(self):
age = int(input("Type in the pet's age: "))
def get_name(set_name):
return set_name
def get_type(set_type):
return set_type
def get_age(set_age):
return set_age
pet = Pet(set_name, set_type, set_age)
我得到一个 NameError: name 'set_name' is not defined。从 Pet 类创建对象时,我尝试了不同的参数。
我应该如何定义方法和参数以使其工作?
【问题讨论】:
-
指令说从值设置名称等。该方法不应调用
input。类外的代码应该首先从用户那里收集姓名、类型和年龄,然后使用这些值创建一个 Pet。 -
FWIW,在 Python 中,我们通常不使用 setter 和 getter 方法进行简单的属性访问。我的猜测是这本书最初是为 Java 等另一种语言编写的,并且已经适应了 Python。
-
谢谢@PM2Ring,现在说得通了。并注意了 setter 和 getter 方法。