亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Python為為什么要儲存顯式self

89542767 / 468人閱讀

  全文詳細描述Python為為什么要儲存顯式self,文中依據(jù)案例編碼介紹的十分詳盡,對大家課程的學習、學習培訓或工作也有極強的參照學習培訓和考核實用價值。務必陪我共同進步。


  Bruce的提議


  Bruce了解,大家一般用一個方法來劃分實例變量的引進和其它自變量的引進,因而他建議“self”設定關鍵詞。


  充分考慮最具代表性的一類,生活中有一個方法,比如:


  class C:
  def meth(self,arg):
  self.val=arg
  return self.val
  根據(jù)Bruce這將會改成:
  class C:
  def meth(arg):#Look ma,no self!
  self.val=arg
  return self.val


  那樣,每一種方式將節(jié)約6字符。但我不這樣認為Bruce這一建議就是為減少電腦打字。


  我覺得他真真正正在意的是程序猿浪費時長(很有可能來源于外國語言),有時候好像不用特定“self”主要參數(shù),她們有時候忘掉加上(即便她們比較清楚——習慣是一種無窮的力量)。實際上,在引入實例自變量或方式之前忘掉鍵入“self.”比較之下,省去了參數(shù)列表“self”,通常會造成十分模糊不清的錯誤報告。


  或許更糟糕是指(比如Bruce上述),當方式被恰當表明,但啟用時主要參數(shù)總數(shù)不校時,這時接收到的錯誤報告。Bruce下列事例:


  我答應這也是令人困惑的,但我情愿處理這一不正確消息,而非改動語言表達。


  為什么Bruce建議行不通


  最先,要我提些Bruce典型性論點論據(jù)的反過來提議。


  Traceback(most recent call last):
  File"classes.py",line 9,in
  obj.m2(1)
  TypeError:m2()takes exactly 3 arguments(2 given)

  有非常好的論點論據(jù)能證明在參數(shù)列表中應用顯式“self”本質上能增強下列二種調用方法的等效性。“foo”是“C”1個事例:


  foo.meth(arg)==C.meth(foo,arg)

  (坦白說,我不理解這個案例的意味。下列僅僅是個人見解。在類內部結構聲明數(shù)組中,可能有幾類不同類型的方式:實例方法、類方法與靜態(tài)方法。他們角色與行為是不一樣的,那樣怎么區(qū)分界定和啟用呢?Python約定好一個方法,則在界定時要第一位主要參數(shù)來劃分:self表示案例法,cls或其它矩陣表示類方式……這三種方式如同兩個扁豆相同,看上去完全一致,如同上事例的左邊等于號相同。這時,應依據(jù)界定時給的主要參數(shù)開展區(qū)劃。比如,在墻上實例等于號的右側,第一位主要參數(shù)是實例對象,表示此處是實例方式。


  另外論點論據(jù)要在參數(shù)列表中應用顯式“self”將一個函數(shù)插進一個類,得到動態(tài)性改動1個類水平,并建立對應的類方式。


  比如,大家可以在上構建一個“C”徹底等效電路的類,具體如下:


  #Define an empty class:
  class C:
  pass
  #Define a global function:
  def meth(myself,arg):
  myself.val=arg
  return myself.val
  #Poke the method into the class:
  C.meth=meth


  一定要注意,我將會“self”主要參數(shù)重新命名為“myself”為了能注重(在語法結構上),我們并沒有在這兒界定一個方法(漢語翻譯注:類外界是函數(shù)公式,其實就是函數(shù)公式,換句話說,function,內部方式,即method)。


  那樣以后,C有個事例“meth”方式,此方法有個主要參數(shù),并且作用與之前相同。它乃至適用在插入方式類之前建立的C的事例。


  我覺得Bruce我不在意前面提到的等效性。我答應那只是理論的必要性。我最想得到的除外便是老式啟用非常方式的組成(idiom)??墒?,這一組成非常容易出差錯(也正是因為它務必顯式傳送("self"緣故),這也是為什么Python在3000中,個人覺得在大多數(shù)前提下使用這些"super()"的主要原因。


  Bruce你很有可能都會想到一個方法來讓第2個等效電路案例——在一些前提下,這類等效電路至關重要。我也不知道Bruce我花多少時長想著如何完成它的提議,但我覺得他正在努力將一個稱為“self”在類上直接界定的全部方式全部方式的念頭(我不得不說成“直接的”那樣,嵌入在方式里的函數(shù)公式就能避免這類自動操作)。用這種方式,第一位等效電路案例可以維持等效電路。


  可是,有一種方法我覺得Bruce未與編譯程序加上某些東西根本不可能ESP解決方法:裝飾設計設備。我我想這是Bruce最后不成功的提議。


  在我們裝飾設計一個方法時,誰也不知道是否該全自動加上它“self”主要參數(shù):裝飾設計設備能將函數(shù)公式轉換成靜態(tài)方法(不“self”)或類方式(有個有意思的方式(self,它偏向一個類,而不只是事例),或是它能夠做些截然不同的事兒(純粹應用Python完成“classmethod”或“staticmethod”裝飾設計設備很繁瑣)。如果你了解裝飾器的用處,不然沒有別的方式來再決定是否得出一類掩藏的方法去界定它“self”主要參數(shù)。


  我拒絕獨特外包裝等“classmethod”和“staticmethod”高科技什么的。我還認為,除開自查以外,全自動明確一個方法是一類方式(classmethod),實例方法(instancemethod)依然靜止的(staticmethod),這個不是一個好辦法(如同)Bruce在文章中的評論里,有些人提議):這也使得難以只遵照方式以前的方式“def”,確定怎樣調這個方法。


 ?。h語翻譯注:針對一個方法,在加上相對應參數(shù)當前情況下,能夠簡單的加上裝飾器來劃分這是什么樣的方法,而且在啟用時非常容易區(qū)別啟用;可是,要是沒有加上主要參數(shù),即便大家可以應用奇妙的全自動體制來劃分這是什么樣的方法,你也不確定在啟用時怎樣啟用)。

  def foo(self,arg):...


  在評論里,我看見了某些十分極端化對Bruce建議的附合,但一般代價也是很難遵守規(guī)則,或需要深層次的語言表達改動,這也使得大家極為無法接受,特別是合拼Python3.1.順便說一下,對3..1、再度申明我們自己的標準,新特點僅有在保證向后兼容的情形下才可以接納。

  def self.foo(arg):...


  有個看起來切實可行的提議(能使其向后兼容)是類中的意見


  classmethod
  def cls.foo(arg):...


  好啦,和現(xiàn)在的狀況對比,我喜歡這個。Bruce我覺得它的blog發(fā)表評論所提出的提議或者更極端化這樣的說法要好很多,并且其具有向后兼容性極大的優(yōu)點,能用參照完成而無需太多勤奮PEP。(我覺得Bruce假如他確實勤奮寫下可信賴的文章內容,他大概自身提議中的不足PEP或嘗試完成它。


  綜上所述,這篇文章就給大家介紹完畢,希望可以給大家?guī)韼椭?/p>

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://www.ezyhdfw.cn/yun/128851.html

相關文章

  • SICP Python 描述 第五章 序列和協(xié)程

    摘要:消息向迭代器獲取所表示的底層序列的下一個元素。為了對方法調用做出回應,迭代器可以執(zhí)行任何計算來獲取或計算底層數(shù)據(jù)序列的下一個元素。這個迭代器應擁有方法,依次返回序列中的每個元素,最后到達序列末尾時產(chǎn)生異常。 第五章 序列和協(xié)程 來源:Chapter 5: Sequences and Coroutines 譯者:飛龍 協(xié)議:CC BY-NC-SA 4.0 5.1 引言 在這一章中,我...

    leap_frog 評論0 收藏0
  • SICP Python 描述 2.7 泛用方法

    摘要:使用消息傳遞,我們就能使抽象數(shù)據(jù)類型直接擁有行為。構造器以類似的方式實現(xiàn)它在參數(shù)上調用了叫做的方法。抽象數(shù)據(jù)類型允許我們在數(shù)據(jù)表示和用于操作數(shù)據(jù)的函數(shù)之間構造界限。 2.7 泛用方法 來源:2.7 Generic Operations 譯者:飛龍 協(xié)議:CC BY-NC-SA 4.0 這一章中我們引入了復合數(shù)據(jù)類型,以及由構造器和選擇器實現(xiàn)的數(shù)據(jù)抽象機制。使用消息傳遞,我們就能...

    leanote 評論0 收藏0
  • [譯] 與 Python 無縫集成——基本特殊方法 3

    摘要:比較運算符方法有六個比較運算符。根據(jù)文檔,其映射工作如下第七章創(chuàng)建數(shù)字我們會再次回到比較運算符這塊。同一個類的對象的比較實現(xiàn)我們來看看一個簡單的同一類的比較通過觀察一個更完整的類現(xiàn)在我們已經(jīng)定義了所有六個比較運算符。 注:原書作者 Steven F. Lott,原書名為 Mastering Object-oriented Python __bool__()方法 Python對假有個很...

    2json 評論0 收藏0
  • django rest framework個人學習筆記(六)————Tutorial4.認證于授權

    摘要:另外一個字段用于儲存突出顯示的代碼的表示形式。這將確保認證用戶擁有讀寫權限,而未認證用戶只有讀的權限。唯一的限制是必須是。 官網(wǎng)地址目前,我們的API沒有對如 edit 或者 delect做出任何限制。我們希望有一些更加高級的功能能夠做到: Code snippets 應該永遠和創(chuàng)建者相關 只有認證的用戶才能夠創(chuàng)建snippets 只有創(chuàng)建者才能更新或者刪除他的snippet 沒有認...

    eternalshallow 評論0 收藏0
  • django rest framework個人學習筆記(六)————Tutorial4.認證于授權

    摘要:另外一個字段用于儲存突出顯示的代碼的表示形式。這將確保認證用戶擁有讀寫權限,而未認證用戶只有讀的權限。唯一的限制是必須是。 官網(wǎng)地址目前,我們的API沒有對如 edit 或者 delect做出任何限制。我們希望有一些更加高級的功能能夠做到: Code snippets 應該永遠和創(chuàng)建者相關 只有認證的用戶才能夠創(chuàng)建snippets 只有創(chuàng)建者才能更新或者刪除他的snippet 沒有認...

    MonoLog 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<