首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >目标定向

目标定向
EN

Stack Overflow用户
提问于 2014-04-02 07:29:59
回答 4查看 181关注 0票数 2
代码语言:javascript
复制
class Mammal(object):
    def __init__(self, name):
        self.name = name

    def get_name(self):
        return self.name

    def say(self):
        print("What does the " + self.name + " says")

以上是我的代码

当我尝试print(Mammal("Fox").say())时,我得到了What does the Fox says,这是正确的,但是我得到了另一个额外的None。有什么问题吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-04-02 07:31:04

这是因为方法say不返回None,它只是打印一些东西,如果它没有描述的返回语句,那么在python中它就不会返回。

代码语言:javascript
复制
>>> print (Mammal("Fox").say())
None

>>> def a():
...     return True
>>> def b():
...     pass
>>> print(a())
True
>>> print(b())
None

但是,如果您希望更多地使用pythonic,则应该让您的say方法返回字符串,而不是这样说:

代码语言:javascript
复制
def say(self):
    return "What does the " + self.name + " says"

这样,只有在调用方法时才能得到字符串,而实际上不打印任何内容:

代码语言:javascript
复制
>>> print(Mammal("Fox").say())
What does the Fox says

但是,如果您想坚持使用该方法进行打印,可以这样做:

代码语言:javascript
复制
Mammal("Fox").say()

或者:

代码语言:javascript
复制
fox = Mammal('Fox')
fox.say()
票数 2
EN

Stack Overflow用户

发布于 2014-04-02 07:34:24

方法say()返回None。它本身也打印一个字符串。

尝试:

代码语言:javascript
复制
Mammal("Fox").say()

要尝试的另一件事是将字符串提取到方法中:

代码语言:javascript
复制
def what_should_i_say(self):
    return "What does the " + self.name + " says"
def say(self):
    print self.what_should_i_say()

然后

代码语言:javascript
复制
print Mammal("Fox").what_should_i_say()
Mammal("Giraffe").say()
票数 1
EN

Stack Overflow用户

发布于 2014-04-02 07:32:39

代码语言:javascript
复制
Mammal("Fox").say()

这就是你所需要的。

哺乳动物(“Fox”).say()返回None,因此您实际上是在键入:

代码语言:javascript
复制
print(None)

它恰好打印了一句谚语来计算.say()不返回任何内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22804408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档