Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么不';t二传手和接球手是否能按预期工作?_Python_Python 2.7_Setter_Getter - Fatal编程技术网

Python 为什么不';t二传手和接球手是否能按预期工作?

Python 为什么不';t二传手和接球手是否能按预期工作?,python,python-2.7,setter,getter,Python,Python 2.7,Setter,Getter,这是我关于Stackoverflow的第一个问题,这是我正在做的一项任务。在请求你的帮助之前,我已经用尽了所有其他的选择 代码将创建一个类,该类将要求用户输入宠物的姓名、年龄和类型,并使用accessor方法返回结果。这是我的第一次课堂作业,我无法让它打印或返回输入。如果有人能向我解释我的问题在哪里,并给我指出正确的方向。我不确定我的类是错的,字段、getter还是setter。我觉得我在某个地方犯了一个简单的错误,我想不出来 这是Python2.7 #Pet class class Pet

这是我关于Stackoverflow的第一个问题,这是我正在做的一项任务。在请求你的帮助之前,我已经用尽了所有其他的选择

代码将创建一个类,该类将要求用户输入宠物的姓名、年龄和类型,并使用accessor方法返回结果。这是我的第一次课堂作业,我无法让它打印或返回输入。如果有人能向我解释我的问题在哪里,并给我指出正确的方向。我不确定我的类是错的,字段、getter还是setter。我觉得我在某个地方犯了一个简单的错误,我想不出来

这是Python2.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()

您似乎误解了类在Python中的工作方式。您可能希望
\uuuu setName\uuuu
方法位于
类Pet
范围内。
main
函数不是类的一部分,在那里定义函数不会影响任何事情。此外,您还多次重新定义了
\uuuu setName\uuu
方法。想必,您希望将它们命名为
\uuuuuusettype\uuuuuuu
\uuuuuuuuuuuuuuuuuu
等等。此外,在Python中,以双下划线开头方法名是非常罕见的。这通常是为特殊方法保留的,如
\uuuu init\uuuu
。例如,应该只调用常规方法
setAge
。另外,他说方法名不应该是驼峰大小写,而是使用下划线来分隔单词。因此,更具python风格的名称应该是
set\u name
。然而,Python通常根本不使用
set.*
get.*
方法,而是更愿意使用

最后,如果您真正使用的是Python2.7,那么您可能应该使用“新型”对象,这意味着您应该将
定义行更改为从
对象
继承

请尝试从这里开始:

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? ')

非常感谢你的建议。不知什么原因,我们的教授让我们学习2.7。你写的有道理,我改正了我需要的。我唯一的问题是输入无法打印。“返回”不应该打印输入吗?
return
不打印。这就是
print
的功能。对不起。我意识到在我发了这条信息之后,我就开始四处奔波了,哈哈。我是新来的。由于某种原因,我仍然无法获得要打印的输入。我花了几个小时试图把这段代码打印出来。这应该不需要几个小时,但我还是个巨蟒迷。代码很好,只是无法打印。我哪里出错了?你可以用新信息更新你的问题,或者问一个新问题作为后续。