希望這是一個簡單的問題。如果我有一個對象,我想調用一個方法,這是更好的方法,A或B?對象上的Python方法 - 哪個更好?
class foo(object):
def bar():
print 'bar'
# approach A
f = foo()
f.bar()
# approach B
foo().bar()
希望這是一個簡單的問題。如果我有一個對象,我想調用一個方法,這是更好的方法,A或B?對象上的Python方法 - 哪個更好?
class foo(object):
def bar():
print 'bar'
# approach A
f = foo()
f.bar()
# approach B
foo().bar()
如果你唯一的目的是呼籲bar()
一個foo
對象上,B是好的。
但是,如果您實際上計劃稍後對該對象執行某項操作,則必須使用A作爲B,因爲B不會留下任何對創建對象的引用。
可以使用@staticmethod裝飾器而不是B?看起來像一個更好的解決方案。 – Phil 2010-03-09 14:33:40
@Phil:更好的是什麼?是的,如果你需要的話,你可以使用'@ staticmethod'。目前尚不清楚你是否需要它。 – SilentGhost 2010-03-09 14:39:08
A更具可讀性。
所以,A :)
方法B不保留物體。如果法巴()返回自我,那麼你可以這樣寫:
f = foo().bar()
個人而言,我喜歡的方法A.雖然我已經開始做setter函數,爲了把它們連回自己在一起,就像上面 - 我不認爲其他人認爲pythonic。
當stdlib方法的指針與返回值無關時,即使返回self可讓您鏈接和輸入較少,Python stdlib也會返回None而不是self。例如:'list.sort'。所以不行。我真的不認爲你可以稱之爲pythonic,儘管什麼是或不是pythonic都不是客觀的。 – 2010-03-09 14:53:20
在哪方面比較好? – domruf 2010-03-09 14:30:00
這似乎不是一個有效的類定義。你的「自我」在哪裏? – SilentGhost 2010-03-09 14:36:23
'TypeError:bar()不需要參數(給出1)' – Amarghosh 2010-03-09 15:02:31