python物件導向一

germo發表於2021-09-09

類是一種資料型別,而物件是具有這種資料型別的變數。類是抽象的,不佔有記憶體空間。而物件是具體的,佔有儲層空間。

python中,透過class關鍵字定義類。
形式:

class className:
        類體

類體定義類的成員,有二種型別成員。一是資料成員,它描述問題的屬性。二是成員函式,它描述問題的行為。

類是抽象的,要使用類定義的功能必須將類例項化,即建立物件。 物件名=類名(引數列表)

class Person:
    name=' '
    age=0
    def  display(self):
        print('name={0},age={1}'.format(self.name,self.age))

p=Person()
p.name='tom'
p.age=22
p.display()

結果

name=tom,age=22

物件導向,具有繼承,抽象,封裝等特點
python中,定義的方法至少含一個引數,一般預設self(相當於,其它語言的this吧),需要作為第一個引數。

類屬性就是類物件擁有的屬性,它被類物件共有,在記憶體中只有一個副本

class Person:
    name=' '  #共有類屬性
    __age=0  #私有類屬性
    def setAge(self,a):
        self.__age=a
    def  display(self):
        print('name={0},age={1}'.format(self.name,self.__age))

p=Person()
#p.name='tom' 可以,但是不提倡
Person.name='tom'
p.setAge(22)
p.display()

類屬性,屬於類,既可以透過類訪問,也可以透過物件訪問,但是不建議透過物件訪問。

例項屬性, 不需要再類中顯示定義,而在init中建構函式中定義,定義時以self為字首。在其它方法也可以隨意新增例項物件物件,建議不這麼做,最好在init中給出。

例項屬性屬於例項物件,只能透過物件訪問。

class Animal:
    def __init__(self,n,c):
        self.name=n #定義例項屬性
        self.color=c
    def display(self):
        print('name={0},color={1}'.format(self.name,self.color))

an=Animal('dog','black')
an.display()
name=dog,color=black

類的方法
類中的內建方法, 在python中有一些內建方法,這些方法名都有特殊的約定,以2個下劃線開始,2個下劃線結束, 類中最常用的就是構造方法和析構方法。

構造方法 init(self,***) 在生成物件的時候呼叫,可以進行一些屬性初始化操作,不需要顯示呼叫,系統會預設執行。構造方法支援過載,如果使用者沒有定義新的構造方法,系統會自動執行預設的構造方法。

析構方法 del(self)在釋放物件的時候呼叫,支援過載,不需要顯示呼叫。

class Animal:
    def __init__(self,n,c):
        self.name=n #定義例項屬性
        self.color=c
        print("執行了建構函式")

    def __del__(self):
        print("執行了解構函式")
    def display(self):
        print('name={0},color={1}'.format(self.name,self.color))

an=Animal('dog','black')
an.display()
del an

結果是:

執行了建構函式
name=dog,color=black
執行了解構函式

分2部分吧。。。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1868/viewspace-2802054/,如需轉載,請註明出處,否則將追究法律責任。

相關文章