2012-08-09 57 views
2

我正在学习类和我有一个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() 

我知道我在做这么明显的错误,但我真的不知道该怎么做。我会很感激一些帮助。

+0

它看起来像您所呼叫first.displayName(),它简单地返回名称的代码看简单。如果你想打印一些你需要调用的东西:first.saying()或print(“Hello%s”%first.displayName()) – Roger 2012-08-09 03:45:33

+0

我明白了,但不是返回应该返回自我的任何东西。名称? – Hyzenthlay 2012-08-09 04:14:45

+0

是的,但你没有在任何地方打印出来吗?你只是回来了。 – Roger 2012-08-09 04:18:16

回答

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