再談類定義

上文中定義了一個包含一個構造方法和四個實例屬性的類MyLine。對于Python中的類,還有其他相關的概念需要我們了解。

Python中實例屬性包含實例變量和實例方法。

1.實例變量的定義

作為動態(tài)語言,Python中的類不要求預先定義實例變量,實例變量賦值即視為定義,你也可以在類的其他普通方法中定義和使用實例變量。請看如下交互式環(huán)境下運行的代碼:


>>> class Foo:

         def__init__(self,x):

                   self.x= x

         deftesta(self,y):

                   self.y= y

         defgetxy(self):

                   print(self.x,self.y)

>>> f = Foo(3)

>>> f.getxy()

Traceback (most recent call last):

  File"", line 1, in

   f.getxy()

  File"", line 9, in getxy

   print(self.x,self.y)

AttributeError: 'Foo' object has noattribute 'y'

>>> f.testa(9)

>>> f.getxy()

3 9

第一次調用f.getxy()時,試圖使用實例變量y,Python給出的錯誤信息很明確,此時,F(xiàn)oo對象的實例f還不具有實例變量y。當執(zhí)行完f.testa(9)時,實際上就是運行了方法中的語句self.y = 9,這時,通過賦值即定義的形式使f這個實例具有了y這個實例變量。所以,再次調用f.getxy()時,成功地輸出了x和y的屬性值。

一般情況下,實例變量盡量在類的構造方法中定義和賦值,如果能保證其實例變量是在使用前被定義和賦值,則也可以在一般方法中定義實例變量,實現(xiàn)的方法可以是在構造方法中調用定義實例變量的一般方法一次。

2.實例方法的定義

通過上文中的代碼,也可以看出一般實例方法的定義和構造方法定義形式是類似的,只不過方法名稱不使用雙下劃線了。

一般方法的定義時,第一個參數(shù)也是self,用于對實例自身的引用,其他參數(shù)可以和面向過程的函數(shù)一樣,由用戶根據(jù)實際需求定義。但需要說明的是,在使用類實例去調用普通的實例方法時,self這個參數(shù)是不用提供的,由Python自動傳入。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容