3 回答

TA貢獻1805條經驗 獲得超9個贊
我想引用Peters的Python禪。“明確比隱含更好?!?/p>
在Java和C ++中,this.
可以推導出' ',除非你有可變名稱使其無法推斷。所以你有時需要它,有時卻不需要它。
Python選擇將這樣的內容顯式化而不是基于規則。
此外,由于沒有任何暗示或假設,因此公開了部分實現。 self.__class__
,self.__dict__
和其他“內部”結構,一個明顯的方式可供選擇。

TA貢獻1864條經驗 獲得超6個贊
這是為了最小化方法和功能之間的差異。它允許您輕松地在元類中生成方法,或者在運行時將方法添加到預先存在的類中。
例如
>>> class C(object):
... def foo(self):
... print "Hi!"
...
>>>
>>> def bar(self):
... print "Bork bork bork!"
...
>>>
>>> c = C()
>>> C.bar = bar
>>> c.bar()
Bork bork bork!
>>> c.foo()
Hi!
>>>
它(據我所知)也使python運行時的實現更容易。

TA貢獻1845條經驗 獲得超8個贊
我建議人們應該閱讀Guido van Rossum關于這個主題的博客 - 為什么顯性自我必須留下來。
當一個方法定義被裝飾時,我們不知道是否自動給它一個'self'參數:裝飾器可以將函數轉換為靜態方法(沒有'self'),或者類方法(有一種有趣的自我,指的是一個類而不是一個實例),或者它可以做一些完全不同的事情(編寫一個在純Python中實現'@classmethod'或'@staticmethod'的裝飾器是微不足道的)。如果不知道裝飾器是否賦予使用隱式“自”參數定義的方法的作用,就沒有辦法。
我拒絕像特殊套管'@classmethod'和'@staticmethod'這樣的黑客攻擊。
添加回答
舉報