2009-02-03 27 views
4

爲python中的類函數傳遞自引用的值的原因是什麼?例如:將自己傳遞給Python中的類函數

class MyClass: 
    """A simple example class""" 
    i = 12345 
    def f(**self**): 
     return 'hello world' 

通過這樣做,你不是在編譯器的工作嗎?

+0

這得到相當有規律的問:http://stackoverflow.com/questions/68282/why-do-you-need-explicitly-have-the-self-argument-into-a-python-method – Dana 2009-02-03 23:24:47

回答

9

許多電子獻出生命多年來討論這個問題。

Guido(python的創造者)在他的博客here中重點討論了這個問題,以迴應去年proposal擺脫明確的自我。 python的FAQ也是covers the issue

最後,如果你不介意一點灰色魔法,你可以use a metaclass to get rid of it。雖然有很好的理由說明爲什麼你不應該那樣做(它會破壞屬性,會讓你更難理解其他人的代碼,並且會讓看着你的代碼的其他Python程序員感到困惑)。