Hyz*_*lay 2 python return class
我正在学习类和我的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()
Run Code Online (Sandbox Code Playgroud)
我知道我做的事情显然是错的,但我真的不知道是什么.我很感激一些帮助.
要回答你的问题- 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
Run Code Online (Sandbox Code Playgroud)
但是如果你创建一个包含内容的文件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)
Run Code Online (Sandbox Code Playgroud)
className有冗余,你应该只重命名你的类Name- 新样式类也应该总是继承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)
Run Code Online (Sandbox Code Playgroud)
通过重写classes 方法自动完成创建__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)
Run Code Online (Sandbox Code Playgroud)
通过这种方式,您可以在实例化类时初始化您的名称,例如
first = Name("Jack")
Run Code Online (Sandbox Code Playgroud)
其次,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)
Run Code Online (Sandbox Code Playgroud)
这样,您只需要做两件事:
>>> n = Name("Jack")
>>> print n
Jack
Run Code Online (Sandbox Code Playgroud)