python第五次筆記 物件導向

2021-10-10 20:29:29 字數 4330 閱讀 3490

一種程式設計思想,是針對大型程式,複雜邏輯開發時使用的程式設計思想。

是一種設計者思維。

抽象:把看著像的東西,統稱為一類。

封裝:將屬性(變數)和方法(函式)定義列表中,可以隱藏部分或全部資料

繼承:讓子類繼承父類的所有公有的屬性和方法。

多型:讓同乙個方法在不同類中實現不同功能。

類(class): 用來描述具有相同的屬性和方法的物件的集合。它定義了該集合中每個物件所共有的屬性和方法。物件是類的例項。

方法:類中定義的函式。

類變數:類變數在整個例項化的物件中是公用的。類變數定義在類中且在函式體之外。類變數通常不作為例項變數使用。

資料成員:類變數或者例項變數用於處理類及其例項物件的相關的資料。

方法重寫:如果從父類繼承的方法不能滿足子類的需求,可以對其進行改寫,這個過程叫方法的覆蓋(override),也稱為方法的重寫。

區域性變數:定義在方法中的變數,只作用於當前例項的類。

例項變數:在類的宣告中,屬性是用變數來表示的,這種變數就稱為例項變數,例項變數就是乙個用 self 修飾的變數。

繼承:即乙個派生類(derived class)繼承基類(base class)的字段和方法。繼承也允許把乙個派生類的物件作為乙個基類物件對待。例如,有這樣乙個設計:乙個dog型別的物件派生自animal類,這是模擬"是乙個(is-a)"關係(例圖,dog是乙個animal)。

例項化:建立乙個類的例項,類的具體物件。

物件:通過類定義的資料結構例項。物件包括兩個資料成員(類變數和例項變數)和方法。

1、類是一種抽象資料型別,是對現實世界的一類資料及其操作的封裝;用於建立物件的模板(屬性(資料)和 方法(函式))

物件:型別(創造物件的類名)value、id , 一切皆為物件

屬性:物件擁有的value

方法:方法是封裝在類中的函式,公開方法可以被類的物件呼叫。

class

classname

:1>..

.

類例項化後,可以使用其屬性,實際上,建立乙個類之後,可以通過類名訪問其屬性。

2、類的例項化

import person

bauer = person(

"bauer"

)bauer.hello(

)

3、類成員的可見性

import uuid

class

person

(object):

nationality =

"china"

def__init__(self,name)

: self.name = name

self.__id =

str(uuid.uuid1())

defhello

(self)

:print

("hello,i am%s,i come from %s,my id is %s"

%(sef.name,self.nationality,sef.__id)

)if__name__ ==

"__main__"

: bauer = person(

"bauer"

)print

(bauer.__dict__)

print

(bauer._person__id)

# 輸出

# ed496846-94c7-11e9-80c4-5ce0c5e8bcf0

4、私有屬性

私有屬性和例項屬性必須在__init__方法中進行宣告,但私有屬性的屬性名需要以雙下劃線__開頭,比如person中的__id屬性。私有屬性是一種特殊的例項屬性,只允許在例項物件的內部(成員方法或私有方法中)訪問,而不允許在例項物件的外部通過例項物件或類來直接訪問,也不能被子類繼承。

import uuid

class

person

(object):

nationality =

"china"

def__init__

(self, name)

: self.name = name

self.__id =

str(uuid.uuid1())

defhello

(self)

:print

("hello, i am %s, i come from %s, my id is %s"

%(self.name, self.nationality, self.__id)

)if __name__ ==

"__main__"

: bauer = person(

"bauer"

) bauer.hello(

)# print(bauer.__id) # attributeerror: 'person' object has no attribute '__id'

# print(person.__id) # attributeerror: type object 'person' has no attribute '__id'

# 輸出 hello, i am bauer, i come from china, my id is c0c02dcc-94aa-11e9-972c-5ce0c5e8bcf0

私有屬性不能通過類直接訪問,也不能通過例項物件直接訪問,但私有屬性可以通過成員方法進行訪問。

私有屬性可以通過成員方法或是例項物件._類名__私有變數名的方式來訪問。

import uuid

class

person

(object):

nationality =

"china"

def__init__

(self, name)

: self.name = name

self.__id =

str(uuid.uuid1())

defhello

(self)

:print

("hello, i am %s, i come from %s, my id is %s"

%(self.name, self.nationality, self.__id)

)def

get_id

(self)

:return self.__id

if __name__ ==

"__main__"

: bauer = person(

"bauer"

) bauer.hello(

)print

(bauer._person__id)

print

(bauer.get_id())

"""輸出 hello, i am bauer, i come from china, my id is c0c02dcc-94aa-11e9-972c-5ce0c5e8bcf0

354547ae-94ab-11e9-a52c-5ce0c5e8bcf0

354547ae-94ab-11e9-a52c-5ce0c5e8bcf0

"""

python 同樣支援類的繼承,如果一種語言不支援繼承,類就沒有什麼意義。

class

derivedclassname

(baseclassname1)

:1>..

.

baseclassname(示例中的基類名)必須與派生類定義在乙個作用域內。除了類,還可以用表示式,基類定義在另乙個模組中時這一點非常有用:

class

derivedclassname

(modname.baseclassname)

:

類的私有屬性

__private_attrs:兩個下劃線開頭,宣告該屬性為私有,不能在類的外部被使用或直接訪問。在類內部的方法中使用時 self.__private_attrs。

類的方法

在類的內部,使用 def 關鍵字來定義乙個方法,與一般函式定義不同,類方法必須包含引數 self,且為第乙個引數,self 代表的是類的例項。

self 的名字並不是規定死的,也可以使用 this,但是最好還是按照約定是用 self。

類的私有方法

__private_method:兩個下劃線開頭,宣告該方法為私有方法,只能在類的內部呼叫 ,不能在類的外部呼叫。self.__private_methods。

python物件導向 第五次筆記

物件導向 一種程式設計思想,是針對於大型程式,複雜邏輯開發時使用的程式設計思想 抽象 把看著像的東西,統稱為一類 封裝 將屬性 變數 和方法 函式 定義到類中,可以隱藏部分或全部資料。繼承 讓子類繼承父類的所有公有的屬性和方法。多型 讓同乙個方法在不同類中實現不同的功能 類 用於建立物件的模版。屬性...

物件導向 第五次

1.物件導向 一種程式設計思想,是針對於大型程式,複雜邏輯開發時使用的程式設計思想 2.面向過程 根據業務邏輯從上到下寫壘 1 python物件導向的重要術語 1.多型 polymorphism 乙個函式有多種表現形式,呼叫乙個方法有多種形式,但是表現出的方法是不一樣的。2.繼承 inheritan...

物件導向第五次作業

本次作業大家可以先行嘗試思考下具體應該設計幾個類,每個類的資料成員和成員函式是什麼,然後嘗試著實現一下,本週不用上交。問題描述 有品牌汽車的風擋玻璃雨刷 wiper 是由帶刻度盤 dial 的控制桿 lever 控制的。這種控制桿有四個位置 停止 間歇 低速和高速,刻度盤有三個位置,分別是數字1 2...