2010-10-26 17 views
1

我通常擁有帶一個參數的功能,設置一個實例變量給該參數,然後做其他事情,如:編碼風格:使用參數還是實例變量?

def updateFoo(self, foo): 
    self.foo = foo 
    fooProcessor1(foo) 
    fooProcessor2(self.foo) 

你喜歡傳遞參數本身,在fooProcessor1,或者新設置實例變量,如fooProcessor2?爲什麼或者爲什麼不?

回答

2

命名爲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)。也就是說,這主要是個人喜好的問題。只要你一致,我認爲這不重要。

+0

我並不是說它只是一個setter函數,這些funcs也會做其他事情。改變了func的名字 – Claudiu 2010-10-27 00:39:44

+0

@Claudiu - 作爲一種風格,您正在設置'self.foo',然後基於'self.foo'的新值重新計算事物。它可能會分裂毛髮,但這與基於*參數* foo的重新計算值不完全相同。正因爲如此,我喜歡邁克爾的解決方案,它將問題分開。 – 2010-10-27 00:49:51

+0

嗯,是的,我看到你的觀點..我喜歡它 – Claudiu 2010-10-27 02:43:33

2

編碼器應該是懶惰的。自。在上午1點輸入太多了。

+0

這讓我發笑 – user1288851 2012-10-29 16:41:10