类返回语句不打印任何输出

时间:2012-08-09 03:42:48

标签: python class return

我正在学习Classes并且遇到了return语句的问题(这是一个声明吗?我希望如此),程序什么都不打印,它只是在没有做任何事情的情况下结束。

class className:
    def createName(self, name):
        self.name = name
    def displayName(self):
        return self.name
    def saying(self):
        print("Hello %s" % self.name)

first = className()
second = className()

first.createName("Jack")
second.createName("Joy")

first.displayName()
second.displayName()

我知道我做的事情显然是错的,但我真的不知道是什么。我很感激一些帮助。

1 个答案:

答案 0 :(得分:6)

要回答你的问题 - return 打印任何东西,但它有点令人困惑,因为交互式python提示符 打印出的值最后陈述,例如:

Python 2.7.2 (default, Jun 20 2012, 16:23:33) 
[GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 1+1
2

但是如果您创建一个包含内容1+1的文件并将其作为python脚本运行,则不会打印任何内容。

既然你说你是新手,我会就如何改进你的代码给你一些指示。

class className:
    def createName(self, name):
        self.name = name
    def displayName(self):
        return self.name
    def saying(self):
        print("Hello %s" % self.name)

className有冗余,您应该只在Name重命名您的课程 - 同时 new style 课程应始终继承object,所以让我们改变您的定义一下:

class Name(object):
    def createName(self, name):
        self.name = name
    def displayName(self):
        return self.name
    def saying(self):
        print("Hello %s" % self.name)

创建通过覆盖类__init__()方法自动完成。 e.g:

class Name(object):
    def __init__(self, name):
        self.name = name
    def displayName(self):
        return self.name
    def saying(self):
        print("Hello %s" % self.name)

通过这种方式,您可以在实例化类时初始化您的名称,例如

first = Name("Jack")

其次,display通过覆盖方法__repr__来惯用处理,例如。

class Name(object):
    def __init__(self, name):
        self.name = name
    def __repr__(self):
       return self.name
    def saying(self):
        print("Hello %s" % self.name)

这样,你只需要做两件事:

>>> n = Name("Jack")
>>> print n
Jack