2014-04-02 22 views
2
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。問題是什麼 ?

回答

2

這是因爲say返回無的方法,它只是打印的東西 都不是什麼是Python中的方法返回,如果沒有一個return語句描述

>>> print (Mammal("Fox").say()) 
None 

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

然而,如果你想是更Python,你應該讓你的say方法返回一個字符串,而不是說它如下:

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

這樣,當你調用方法並沒有真正PRI你只得到字符串NT東西:

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

不過,如果你想堅持從方法打印,你可以做如下:

Mammal("Fox").say() 

或:

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

是一切你需要的。 。

哺乳動物( 「狐」)說()返回None所以你鍵入有效:

print(None) 

碰巧它打印說法來計算.say()返回無。

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() 
0

您已經添加了一個額外的printMammal("Fox").say()應該可以工作。