【问题标题】:Class return statement not printing any output类返回语句不打印任何输出
【发布时间】:2012-08-06 06:27:26
【问题描述】:

我正在学习 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()

我知道我做错了什么,但我真的不知道是什么。我将不胜感激。

【问题讨论】:

  • 简单看一下代码,看起来您正在调用 first.displayName() ,它只是返回名称。如果你想打印一些东西,你需要调用:first.saying() 或 print("Hello %s" % first.displayName())
  • 我明白了,但是 return 不应该返回 self.name 中的任何内容吗?
  • 是的,但您不会在任何地方打印出来吗?你只是退回它。

标签: python class return


【解决方案1】:

回答您的问题 - 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__() 方法自动完成的。例如:

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

【讨论】:

    猜你喜欢
    • 2023-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多