这是我关于Stackoverflow的第一个问题,这是我正在进行的一项任务。在请求你的帮助之前,我已经用尽了所有其他选择。
代码是创建一个类,该类将要求用户输入他们的宠物名称,年龄和类型,并使用访问器方法返回结果。这是我的第一个课程作业,我无法打印或返回输入。如果有人能够向我解释我的问题所在,并指出我正确的方向。我不确定我的班级是错的,领域,吸气员还是安装者。我觉得我在某个地方犯了一个简单的错误,我无法弄清楚。
这是python 2.7
#Pet class
class Pet():
def __init__(self, name, typea, age):
self.name = name
self.typea = typea
self.age = age
def main():
pet_name =raw_input('What is your pets name? ')
pet_typea =raw_input('What type of animal is your pet? ')
pet_age =raw_input('What is your pets age? ')
def __setName__(self, n):
self.name = n
def __getName__(self, n):
return self.n
def __setTypea__(self, t):
self.typea = t
def __getTypa__(self, t):
return self.t
def __setAge__(self, a):
self.age = a
def __getAge__(self, a):
return self.a
main()
答案 0 :(得分:0)
您似乎误解了类在Python中的工作方式。据推测,您希望__setName__
方法位于class Pet
范围内。 main
函数不是您的类的一部分,定义函数不会影响任何事情。此外,您已多次重新定义__setName__
方法。据推测,您希望将其称为__setType__
和__setAge__
,依此类推。此外,在Python中使用双下划线启动方法名称是非常不寻常的。这通常保留给__init__
等特殊方法。例如,常规方法应该被称为setAge
。此外,PEP-8表示方法名称不应该是驼峰式的,而是使用下划线来分隔单词。所以更多的Pythonic名称是set_name
。但是,Python通常根本不使用set_*
或get_*
方法,而是更喜欢使用properties。
最后,如果您真正使用的是Python 2.7,那么您可能应该使用“新式”对象,这意味着您应该将class
定义行更改为继承自object
请尝试从此处开始:
class Pet(object):
def __init__(self, name, typea, age):
self.name = name
self.typea = typea
self.age = age
def setName(self, n):
self.name = n
def getName(self, n):
return self.n
def setType(self, t):
self.typea = t
def getType(self, t):
return self.t
def setAge(self, a):
self.age = a
def getAge(self, a):
return self.a
def main():
pet_name =raw_input('What is your pets name? ')
pet_typea =raw_input('What type of animal is your pet? ')
pet_age =raw_input('What is your pets age? ')