物件導向(oop)是一種對現實世界理解和抽象的方法,物件的含義是指在現實生活中能夠看得見摸得著的具體事物,一句比較經典的描述是一切皆物件,python 是一門物件導向的語言,物件導向程式設計簡單來說就是一種封裝**的方式。
物件導向相關概念
物件導向三大特性
python 中類的定義使用class
關鍵字,語法如下所示:
class 類名:
屬性 ...
方法 .
..
比如我們定義乙個類 cat,如下所示:
class
cat:
# 屬性
color =
'black'
# 構造方法
def__init__
(self, name)
: self.name = name
# 自定義方法
defeat
(self, food)
: self.food = food
print
(self.name,
'正在吃'
+food)
構造方法__init__()
會在類例項化時自動呼叫。無論構造方法還是其他方法都需要將self
作為第乙個引數,它代表類的例項。
類建立好後,我們可以直接通過類名訪問屬性,格式為:類名.屬性名
,比如我們訪問 cat 類的 color 屬性,如下所示:
print
('color-->'
, cat.color)
上面 cat 類中定義的屬性和方法都是公開的,除此之外我們還可以定義私有屬性和方法,宣告方式為:在屬性名或方法名前加兩條下劃線,示例如下所示:
class
cat:
__cid =
'1'def
__run
(self)
:pass
需要強調一點是:外部不能訪問私有屬性和呼叫私有方法,自然cat.__cid
是會報錯的。
建立物件也稱類的例項化,比如我們通過 cat 類建立物件,如下所示:
# 建立物件
c = cat(
'tom'
)
建立好物件後,我們就可以使用它訪問屬性和呼叫方法了,如下所示:
# 訪問屬性
print
('name-->'
, c.name)
print
('color-->'
, c.color)
# 呼叫方法
c.eat(
'魚')
同樣物件c
不能訪問私有屬性__cid
及呼叫私有方法__run
,那我們會有這樣乙個疑問,這個私有屬性和方法難道定義了卻不能用嗎?
我們來一起看個例子,如下所示:
class
cat:
__cid =
'1'def
__run
(self, speed)
:print
('__cid是'
+self.__cid+
'的貓'
,'以'
+speed+
'的速度奔跑'
)def
run(self, speed)
: self.__run(speed)
c.run(
'50邁'
)
輸出結果:
__cid是1的貓 以50邁的速度奔跑
通過示例我們可以看出,在內部私有屬性和方法是可以被訪問和呼叫的。
python 支援類的繼承,而且支援多繼承,語法格式為:
class 基類(子類1
, 子類2..
.):.
..
示例如下所示:
# 波斯貓類
class
persiancat
(cat)
:def
__init__
(self, name)
: self.name = name
defeat(self, food)
:print
(self.name,
'正在吃'
+food)
#加菲貓類
class
garfieldcat
(cat)
:def
__init__
(self, name)
: self.name = name
defrun(self, speed)
:print
(self.name,
'正在以'
+speed+
'的速度奔跑'
)# 單繼承
class
singlecat
(persiancat)
:pass
# 多繼承
class
multicat
(persiancat, garfieldcat)
:pass
#呼叫sc = singlecat(
'波斯貓1號'
)sc.eat(
'魚')
mc = multicat(
'波斯加菲貓1號'
)mc.eat(
'魚')
mc.run(
'50邁'
)
如果繼承的父類方法不能滿足我們的需求,這時子類可以重寫父類方法,如下所示:
class
singlecat
(persiancat)
:def
eat(self, food )
:print
(self.name,
'正在吃'
+food,
'十分鐘後'
, self.name+
'吃飽了'
)sc = singlecat(
'波斯貓1號'
)sc.eat(
'魚')
Python基礎知識十一 物件導向一
3 self引數 物件導向 語法 class 類名 父類 pass 定義乙個類 class myclass pass print myclass 使用 myclass來建立乙個物件 mc myclass mc就是通過myclass建立的物件,mc是myclass的例項 mc2 myclass mc3...
python物件導向(一) 物件導向基礎
物件導向是python中乙個重點知識,用物件導向的思想程式設計,有利於模組化 方便閱讀和後期的維護。面向過程 注重解決問題的步驟,讓問題根據步驟流程一步一步得到解決 物件導向 萬物皆物件,每個物件都有特徵和功能,物件間又可以相互作用 類 具有相同特徵或行為的事物的統稱 抽象的,不可直接使用 物件 物...
java基礎 一 物件導向
給物件的資料 屬性 進行初始化 具體步驟 1,student.class載入進記憶體 2,宣告乙個student型別引用s 3,在堆記憶體建立物件,4,給物件中屬性預設初始化值 5,屬性進行顯示初始化 6,構造方法進棧,對物件中的屬性賦值,構造方法彈棧 7,將物件的位址值賦值給sclass stud...