Python知識點 物件導向程式設計

2021-09-25 15:25:37 字數 3751 閱讀 3821

物件導向程式設計是一種程式設計正規化,把程式看作不同物件的相互呼叫,對現實世界建立物件模型。

定義乙個person類如下:

class

person

(object):

pass

格式為:

class 類名(

object):

# object表示定義的類是由那個類繼承下來的

函式體pass

類名一般以大寫開頭。建立例項使用類名 + (),類似函式的形式建立:

xvsong = person(

)# 建立」許嵩「物件

在定義 person 類時,可以為person類新增乙個特殊的init()方法,當建立例項時init()方法,當建立例項時,__init__()方法被自動呼叫,能在此為每個例項都統一加上以下屬性:

class

person

(object):

def__init__

(self, name, gender, birth)

: self.name = name

self.gender = gender

self.birth = birth

__init__()方法的第乙個引數必須是self,後續引數則可以自由指定。建立例項時,就必須要提供除self以外的引數:

xvsong = person(

'xvsong'

,'male'

,'1987-1-1'

)

要定義關鍵字引數,使用 **kw;除了可以直接使用self.name = '***』設定乙個屬性外,還可以通過 setattr(self, 『name』, 『***』) 設定屬性。下面是乙個例子:

定義person類的__init__方法,除了接受namegenderbirth外,還可接受任意關鍵字引數,並把他們都作為屬性賦值給例項。

class

person

(object):

def__init__

(self, name, gender,

**kw)

: self.name =name

self.gender = gender

for k, v in kw.items():

setattr

(self, k, v)

pass

pass

pass

再輸入:

xvsong = person(

'xvsong'

,'male'

, job=

'singer'

, face=

'beautiful'

)print

(xvsong.name)

print

(xvsong.job)

print

(xvsong.face)

輸出如下:

xvsong

singer

beautiful

定義類屬性可以直接在 class 中定義:

class

person

(object):

address =

'earth'

def__init__

(self, name)

: self.name = name

因為類屬性是直接繫結在類上的,所以,訪問類屬性不需要建立例項,就可以直接訪問:

print

(person.address)

輸出如下:

earth
python是動態語言,類屬性也是可以動態新增和修改的:

person.address =

'china'

print

(person.address)

輸出如下:

china
因為類屬性只有乙份,所以,當person類的address改變時,所有例項訪問到的類屬性都改變了。 在 class 中定義的例項方法其實也是屬性,它實際上是乙個函式物件:

class

person

(object):

def__init__

(self, name, score)

: self.name = name

self.score = score

defget_grade

(self)

:return

'a'

再輸入:

p1 = person(

'bob',90

)print

(p1.get_grade)

輸出如下:

>>
輸入如下:

print

(p1.get_grade(

))

輸出如下:

a
就是說,p1.get_grade返回的是乙個函式物件,但這個函式是乙個繫結到例項的函式,p1.get_grade()才是方法呼叫。

可以給乙個例項繫結很多屬性,如果有些屬性不希望被外部訪問到怎麼辦?python對屬性許可權的控制是通過屬性名來實現的,如果乙個屬性由雙下劃線開頭(__),該屬性就無法被外部訪問。下面的**是乙個例子:

class

person

(object):

def__init__

(self, name)

: self.name = name

self._title =

'mr'

self.__job =

'student'

輸入如下:

p = person(

'bob'

)print

(p.name)

輸出如下:

bob
輸入如下:

print

(p._title)

輸出如下:

mr
輸入如下:

print

(p.__job)

執行上面一行後會出錯。

如果乙個屬性以__***__的形式定義,那它又可以被外部訪問了。以__***__定義的屬性在python的類中被稱為特殊屬性。有很多預定義的特殊屬性可以使用,通常不要把普通屬性用__***__定義。以單下劃線開頭的屬性_***雖然也可以被外部訪問,但是,按照習慣不應該被外部訪問。

Python 物件導向程式設計的核心概念知識點簡介

第乙個概念 在物件導向程式設計中,物件將變數和方法集中在乙個地方,即物件本身。第二個概念 指的是隱藏類的內部資料,避免客戶端 直接進行訪問。class data def init self self.list1 22,33,44,55,66 def chang list self,index,num...

物件導向程式設計 基礎知識點

類,是對一類事物的抽象描述。所謂抽象描述,就是將這一類事物所共有的屬性特徵 成員屬性 和行為方法 成員方法 抽取出來。物件導向的特點 封裝性 繼承性 多型性。1 宣告類 2 宣告成員屬性 3 例項化類物件 4 訪問公有成員屬性 5 呼叫公有成員方法 6 this 定義類 class user 例項化...

python之物件導向知識點總結

物件導向 三大特性 封裝 繼承 多型 python 本身是一種弱型別語言,本身就支援多型 繼承 多重繼承 執行某個方法 尋找方法的規律 從下往上 從左往右 始終記得self物件代表的是誰,那個物件呼叫的方法,self酒代表的是誰 通過super 類,self init 可以呼叫父類的構造方法 還可以...