我有一個類的方法來建立一些情節。我嘗試在一個圖上顯示不同的圖。圖形的屬性(標題,圖例......)總是被最後一幅圖覆蓋。我預計如果我在我的方法中有return
,那麼行爲會與沒有它的方法有所不同,但似乎並非如此。繪圖需要返回的方法嗎?
我想知道有什麼區別使return
。說明我的問題的代碼是:
import matplotlib.pyplot as plt
import numpy as np
class myClass1(object):
def __init__(self):
self.x = np.random.random(100)
self.y = np.random.random(100)
def plotNReturn1(self):
plt.plot(self.x,self.y,'-*',label='randNxy')
plt.title('Plot No Return1')
plt.legend(numpoints = 1)
def plotNReturn2(self):
plt.plot(self.y,self.x,'-x',label='randNzw')
plt.title('Plot No Return2')
plt.legend(numpoints = 2)
def plotWReturn1(self):
fig = plt.plot(self.x,self.y,'-*',label='randWxy')
fig = plt.title('Plot With Return1')
fig = plt.legend(numpoints = 1)
return fig
def plotWReturn2(self):
fig = plt.plot(self.y,self.x,'-x',label='randWzw')
fig = plt.title('Plot With Return2')
plt.legend(numpoints = 3)
return fig
if __name__=='__main__':
f = myClass1()
p = plt.figure()
p1 = p.add_subplot(122)
p1 = f.plotWReturn1()
p1 = f.plotWReturn2()
print 'method with return: %s: ' % type(p1)
p2 = p.add_subplot(121)
p2 = f.plotNReturn1()
p2 = f.plotNReturn2()
print 'method without return: %s: ' % type(p2)
plt.show()
我發現唯一的區別是輸出的類型,但我不知道這意味着什麼在實踐中。
method with return: <class 'matplotlib.text.Text'>:
method without return: <type 'NoneType'>:
僅僅是關於「pythonic」練習還是有什麼實際的使用任何風格?
是的,我明白,謝謝。在應該顯示一些圖的方法中是否有使用'return'的任何一點? – tomasz74
@ tomasz74 - 如果目的是*顯示*圖,我會讓它返回'None'來表示你正在爲副作用調用函數。 – mgilson