摘要:類方法類內部定義的方法外部方法定義在類外的方法,但是帶上了參數。具體做法是通過給類一個實例綁定外部方法。例如創建新的實例嘗試調用該方法報錯若要給類的所有實例綁定外部方法,則需要給類動態綁定該方法。
類方法:類內部定義的方法
外部方法:定義在類外的方法,但是帶上了self參數。
居于動態語言的靈活性,我們知道可以動態的給實例綁定屬性,那是否可以給實例綁定一個方法,成為實例方法。
例如:
class Student(object): pass >>>s = Student() >>>s.name = "xlp" # 動態語言的靈活性:動態給實例綁定一個屬性 def set_age(self,age) # 定義一個外部方法:set_age(),不是class里的 self.age = age
可以創建一個鏈接把外部的set_age()方法鏈接到Student內。
具體做法是:通過MethodType給類一個實例綁定外部方法。
from types import MethodType # ##???? s.set_age = MethodType (set_age,s) # 給實例綁定一個方法 s.set_age(24) # 調用實例方法 s.age #測試結果 24
但是該方法對除開實例s,對其他實例是不起作用的。
例如:
s2 = Student() # 創建新的實例 s2.set_age(25) # 嘗試調用該方法 # 報錯 #Traceback (most recent call last): # File "", line 1, in #AttributeError: "Student" object has no attribute "set_age"
若要給類的所有實例綁定外部方法,則需要給類動態綁定該方法。
>>>def set_score(self,score): self.score = score >>>Student.set_score = set_score # 直接用類來創建一個方法 >>> s.set_score(100) >>> s.score 100 >>> s2.set_score(59) >>> s2.score 59
此時實例和類都指向同一個set_score()。
通常,上面的set_score()方法一般直接定義在class中,但動態綁定允許我們在程序運行的過程中動態地給class加上功能。
? thanks for watching, keep on updating...
點個贊再走吧
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/44980.html
摘要:方法內部類就是局部內部類,一般定義在類的局部位置,它可以訪問當前代碼塊及外部類的所有變量。 今天溫習一下 Java 中的內部類,內部類一般有如下幾種:靜態內部類、成員內部類、匿名內部類和方法內部類,下文中將主要介紹靜態內部類和成員內部類,主要內容如下: 概述 靜態內部類 成員內部類 匿名內部類和方法內部類 總結 概述 顧名思義內部類就是在一個類內部定義的類,它是內部類是一個獨立的類...
內部類 內部類主要作用 內部類提供了更好的封裝,可以吧內部類隱藏在外部類之內,不允許同一個包中的其他類訪問該類。 內部類成員可以直接訪問外部類的私有數據,因為內部類被當成其外部類成員,同一個類的成員之間可以互相訪問,但外部類不能訪問內部類的實現細節。 匿名內部類適合用于創建那些僅需要使用一次的類。 定義內部類與外部類的語法大致相同,內部類除需要定義在其他類里面之外,還有兩點區別: 內...
摘要:對于一個名為的外圍類和一個的內部類,在編譯成功后,會出現這樣兩個文件和。 Java知識點總結(三個步驟) @(Java知識點總結)[Java, Java面向對象] [toc] 1-定義類 修飾符 訪問修飾符: public protected default private 其他修飾符 abstract:抽象類不能實例化,專門用于繼承的類final:最終類不能被繼承 類名(駝峰命名...
摘要:即使抽象類里不包含抽象方法,這個抽象類也不能創建實例抽象類可以包含成員變量方法普通方法和抽象方法構造器初始化塊內部類接口枚舉種成分。 抽象類 當編寫一個類時,常常會為該類定義一些方法,這些方法用以描述該類的行為方式,那么這些方法都有具體的方法體。但在某些情況下,某個父類只是知道其子類應該包含怎樣的方法,但無法準確地知道這些子類如何實現這些方法。使用抽象方法即可滿足該要求:抽象方法是只有...
閱讀 2639·2021-11-23 09:51
閱讀 894·2021-09-24 10:37
閱讀 3625·2021-09-02 15:15
閱讀 1969·2019-08-30 13:03
閱讀 1888·2019-08-29 15:41
閱讀 2635·2019-08-29 14:12
閱讀 1433·2019-08-29 11:19
閱讀 3309·2019-08-26 13:39