我通常擁有帶一個參數的功能,設置一個實例變量給該參數,然後做其他事情,如:編碼風格:使用參數還是實例變量?
def updateFoo(self, foo):
self.foo = foo
fooProcessor1(foo)
fooProcessor2(self.foo)
你喜歡傳遞參數本身,在fooProcessor1
,或者新設置實例變量,如fooProcessor2
?爲什麼或者爲什麼不?
我通常擁有帶一個參數的功能,設置一個實例變量給該參數,然後做其他事情,如:編碼風格:使用參數還是實例變量?
def updateFoo(self, foo):
self.foo = foo
fooProcessor1(foo)
fooProcessor2(self.foo)
你喜歡傳遞參數本身,在fooProcessor1
,或者新設置實例變量,如fooProcessor2
?爲什麼或者爲什麼不?
命名爲setFoo()
一個真正的函數不應該做任何事情比設定foo
,除非它是計算和緩存從FOO得到的值,在這種情況下,我會沿着線的建議更多的東西:
def setFoo(self, foo):
self.foo = foo
self.__fooUpdated()
def __fooUpdated(self):
# Recompute values derived from foo, dispatch signal to listeners, etc.
中您提出的選項,我更喜歡fooProcessor1(foo)
。也就是說,這主要是個人喜好的問題。只要你一致,我認爲這不重要。
我並不是說它只是一個setter函數,這些funcs也會做其他事情。改變了func的名字 – Claudiu 2010-10-27 00:39:44
@Claudiu - 作爲一種風格,您正在設置'self.foo',然後基於'self.foo'的新值重新計算事物。它可能會分裂毛髮,但這與基於*參數* foo的重新計算值不完全相同。正因爲如此,我喜歡邁克爾的解決方案,它將問題分開。 – 2010-10-27 00:49:51
嗯,是的,我看到你的觀點..我喜歡它 – Claudiu 2010-10-27 02:43:33