国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

類方法 和 外部方法

big_cat / 3235人閱讀

摘要:類方法類內部定義的方法外部方法定義在類外的方法,但是帶上了參數。具體做法是通過給類一個實例綁定外部方法。例如創建新的實例嘗試調用該方法報錯若要給類的所有實例綁定外部方法,則需要給類動態綁定該方法。


類方法:類內部定義的方法

外部方法:定義在類外的方法,但是帶上了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內部總結

    摘要:每個內部類都能獨立地繼承一個接口,而無論外部類是否已經繼承了某個接口。因此,內部類使多重繼承的解決方案變得更加完整。內部類中的與其他類一樣是指的本身。但是靜態內部類卻沒有。 問題:內部類、靜態內部類區別、使用場景? 1.靜態內部類可以有靜態成員(方法,屬性),而非靜態內部類則不能有靜態成員(方法,屬性)。 2.靜態內部類只能夠訪問外部類的靜態成員,而非靜態內部類則可以訪問外部類的所有...

    xiaodao 評論0 收藏0
  • Java系列之內部

    摘要:方法內部類就是局部內部類,一般定義在類的局部位置,它可以訪問當前代碼塊及外部類的所有變量。 今天溫習一下 Java 中的內部類,內部類一般有如下幾種:靜態內部類、成員內部類、匿名內部類和方法內部類,下文中將主要介紹靜態內部類和成員內部類,主要內容如下: 概述 靜態內部類 成員內部類 匿名內部類和方法內部類 總結 概述 顧名思義內部類就是在一個類內部定義的類,它是內部類是一個獨立的類...

    crelaber 評論0 收藏0
  • java面向對象(下)

    內部類 內部類主要作用 內部類提供了更好的封裝,可以吧內部類隱藏在外部類之內,不允許同一個包中的其他類訪問該類。 內部類成員可以直接訪問外部類的私有數據,因為內部類被當成其外部類成員,同一個類的成員之間可以互相訪問,但外部類不能訪問內部類的實現細節。 匿名內部類適合用于創建那些僅需要使用一次的類。 定義內部類與外部類的語法大致相同,內部類除需要定義在其他類里面之外,還有兩點區別: 內...

    awesome23 評論0 收藏0
  • Java知識點總結(三個步驟)

    摘要:對于一個名為的外圍類和一個的內部類,在編譯成功后,會出現這樣兩個文件和。 Java知識點總結(三個步驟) @(Java知識點總結)[Java, Java面向對象] [toc] 1-定義類 修飾符 訪問修飾符: public protected default private 其他修飾符 abstract:抽象類不能實例化,專門用于繼承的類final:最終類不能被繼承 類名(駝峰命名...

    syoya 評論0 收藏0
  • Java 抽象、接口、內部

    摘要:即使抽象類里不包含抽象方法,這個抽象類也不能創建實例抽象類可以包含成員變量方法普通方法和抽象方法構造器初始化塊內部類接口枚舉種成分。 抽象類 當編寫一個類時,常常會為該類定義一些方法,這些方法用以描述該類的行為方式,那么這些方法都有具體的方法體。但在某些情況下,某個父類只是知道其子類應該包含怎樣的方法,但無法準確地知道這些子類如何實現這些方法。使用抽象方法即可滿足該要求:抽象方法是只有...

    miguel.jiang 評論0 收藏0

發表評論

0條評論

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