一種程式設計思想,是針對大型程式,複雜邏輯開發時使用的程式設計思想。
是一種設計者思維。
抽象:把看著像的東西,統稱為一類。
封裝:將屬性(變數)和方法(函式)定義列表中,可以隱藏部分或全部資料
繼承:讓子類繼承父類的所有公有的屬性和方法。
多型:讓同乙個方法在不同類中實現不同功能。
類(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...