面向对象

时间:2014-04-02 07:30:00

标签: python

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。有什么问题?

4 个答案:

答案 0 :(得分:2)

这是因为方法say返回None,它只是打印一些东西 如果没有描述的返回语句

,则python中的方法返回的是none
>>> print (Mammal("Fox").say())
None

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

但是,如果你想要更加pythonic,你应该让你的say方法返回字符串而不是如下所示:

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

这样你只需在调用方法时获取字符串,并且实际上不打印任何内容:

>>> print(Mammal("Fox").say())
What does the Fox says

但是,如果您想坚持使用该方法进行打印,可以按照以下步骤进行:

Mammal("Fox").say()

或:

fox = Mammal('Fox')
fox.say()

答案 1 :(得分:1)

方法say()返回None。它还会打印一个字符串。

尝试:

Mammal("Fox").say()

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

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

然后

print Mammal("Fox").what_should_i_say()
Mammal("Giraffe").say()

答案 2 :(得分:0)

Mammal("Fox").say()

就是你所需要的一切。

哺乳动物(“Fox”)。说()返回无,因此您实际上是在键入:

print(None)

恰好它会打印出来计算说明.say()返回None。

答案 3 :(得分:0)

您添加了额外的printMammal("Fox").say()应该有用。