亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么需要在Python方法中明確地使用“self”參數?

為什么需要在Python方法中明確地使用“self”參數?

慕田峪7331174 2019-07-23 19:29:38
為什么需要在Python方法中明確地使用“self”參數?在Python中定義類的方法時,它看起來像這樣:class MyClass(object):     def __init__(self, x, y):         self.x = x         self.y = y但是在其他一些語言中,例如C#,您可以使用“this”關鍵字引用該方法綁定的對象,而不將其聲明為方法原型中的參數。這是一個有意的語言設計決策在Python或是否有一些實現細節需要傳遞“自我”作為參數?
查看完整描述

3 回答

?
Cats萌萌

TA貢獻1805條經驗 獲得超9個贊

我想引用Peters的Python禪。“明確比隱含更好?!?/p>

在Java和C ++中,this.可以推導出' ',除非你有可變名稱使其無法推斷。所以你有時需要它,有時卻不需要它。

Python選擇將這樣的內容顯式化而不是基于規則。

此外,由于沒有任何暗示或假設,因此公開了部分實現。 self.__class__self.__dict__和其他“內部”結構,一個明顯的方式可供選擇。


查看完整回答
反對 回復 2019-07-23
?
慕尼黑的夜晚無繁華

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運行時的實現更容易。


查看完整回答
反對 回復 2019-07-23
?
精慕HU

TA貢獻1845條經驗 獲得超8個贊

我建議人們應該閱讀Guido van Rossum關于這個主題的博客 - 為什么顯性自我必須留下來

當一個方法定義被裝飾時,我們不知道是否自動給它一個'self'參數:裝飾器可以將函數轉換為靜態方法(沒有'self'),或者類方法(有一種有趣的自我,指的是一個類而不是一個實例),或者它可以做一些完全不同的事情(編寫一個在純Python中實現'@classmethod'或'@staticmethod'的裝飾器是微不足道的)。如果不知道裝飾器是否賦予使用隱式“自”參數定義的方法的作用,就沒有辦法。

我拒絕像特殊套管'@classmethod'和'@staticmethod'這樣的黑客攻擊。


查看完整回答
反對 回復 2019-07-23
  • 3 回答
  • 0 關注
  • 1135 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號