將具有相同屬性,封裝成乙個類.將類具體化被稱為例項,例如下面例子,小明,小紅,小張都是學生,他們就讀不同的學校
class
student
: name=
"" age=
0def
readbook
(self)
:if self.age<=6:
print
("%s今年%d歲,就讀幼兒園"
%(self.name,self.age))if
6print
("%s今年%d歲,就讀小學"
%(self.name,self.age))if
12print
("%s今年%d歲,就讀初中"
%(self.name,self.age)
)xiaoming=student(
)xiaoming.name=
"小明"
xiaoming.age=
5xiaoming.readbook(
)xiaohong=student(
)xiaohong.name=
"小紅"
xiaohong.age=
10xiaohong.readbook(
)xiaozhang=student(
)xiaozhang.name=
"小張"
xiaozhang.age=
14xiaozhang.readbook(
)
結果:
小明今年5歲,就讀幼兒園
小紅今年10歲,就讀小學
小張今年14歲,就讀初中
建構函式__init__:在例項產生的時候自動執行,例如上面也可以寫作:
class
student
:def
__init__
(self,name,age)
: self.name=name
self.age=age
defreadbook
(self)
:if self.age<=6:
print
("%s今年%d歲,就讀幼兒園"
%(self.name,self.age))if
6print
("%s今年%d歲,就讀小學"
%(self.name,self.age))if
12print
("%s今年%d歲,就讀初中"
%(self.name,self.age)
)xiaoming=student(
"小明",5
)xiaoming.readbook(
)xiaohong=student(
"小紅",10
)xiaohong.readbook(
)xiaozhang=student(
"小張",14
)xiaozhang.readbook(
)
可呼叫例項方法__call__:將例項當做函式呼叫,會自動執行__call__方法:
class
student
:def
__init__
(self,name,age)
: self.name=name
self.age=age
def__call__
(self,frend)
:print
("%s的朋友是%s"
%(self.name,frend)
)
xiaoming=student(
"小明",5
)xiaoming(
"小紅"
)
返回值『:
小明的朋友是小紅
類的子類,可以繼承類的屬性和方法,子類可以拓展類的屬性和方法,申明方法:class 子類(類)
,同樣的例子,小學生是學生的子類,小紅是小學生的例項,**:
class
student
:def
__init__
(self,name,age)
: self.name=name
self.age=age
defshow
(self)
:print
("%s是乙個學生,今年%d歲了"
%(self.name,self.age)
)class
pupil
(student)
:def
__init__
(self,name,age,interest)
: student.__init__(self,name,age)
#直接呼叫父類
self.interest=interest
defreadbook
(self)
:print
("%s在讀小學,愛好是%s"
%(self.name,self.interest)
)xiaohong=pupil(
"小紅",6
,"讀書"
)xiaohong.show(
)xiaohong.readbook(
)
執行結果
小紅是乙個學生,今年6歲了
小紅在讀小學,愛好是讀書
類實現乙個藉口,子類具體實現方法,子類的不同例項直接呼叫子類的方法,如:小學生 中學生 大學生都屬於學生,但是學習的東西不一樣
class
student
:def
__init__
(self,name,age)
: self.name=name
self.age=age
defstudy
(self)
:pass
class
pupil
(student)
:def
study
(self)
:print
("%s學習拼音"
%self.name)
class
midschool
(student)
:def
study
(self)
:print
("%s學習基礎數學"
%self.name)
class
collegeschool
(student)
:def
study
(self)
:print
("%s學習高數"
%self.name)
xiaohong=pupil(
"小紅",5
)xiaohong.study(
)xiaoming=midschool(
"小明",15
)xiaoming.study(
)xiaozhang=collegeschool(
"小張",20
)xiaozhang.study(
)
執行結果
小紅學習拼音
小明學習基礎數學
小張學習高數
相同的函式名,根據引數和返回值不同,呼叫不同的函式,沒找到python有過載的方法,不過可以試著用魔法函式來實現,有知道的大佬說下
defa(
*args):if
len(args)==1
:print
(args[0]
)iflen(args)==2
:print
(args[0]
-args[1]
)a(1)
a(1,2
)
python物件導向學習 python物件導向學習
物件導向最重要的概念就是類 class 和例項 instance 必須牢記類是抽象的模板,比如student類,而例項是根據類建立出來的乙個個具體的 物件 每個物件都擁有相同的方法,但各自的資料可能不同。物件導向三個概念 1.封裝 即把客觀事物封裝成抽象的類,並且類可以把自己的資料和方法讓可信的類進...
python物件導向總結 Python物件導向總結
python 物件導向 oop 1 物件導向 是乙個更大封裝,把乙個物件封裝多個方法 2 類 是對一些具有相同特徵或行為的事物的乙個統稱,是抽象的,不能直接使用 特徵被稱為屬性 行為被稱為方法 3 物件 是由類建立出來的乙個具體的存在,可以直接使用 先有類再有物件,類只有乙個,而物件可以有多個 類中...
python登入物件導向 python 物件導向
一 屬性和方法 1.a a 例項屬性 通過例項物件來新增的屬性就是例項屬性 a.count 10 例項方法都是在類中直接定義的 以self為第乙個引數的方法都是例項方法 當通過例項物件呼叫時,會自動傳遞當前物件作為self傳入 當通過類物件呼叫時,不會自動傳遞self a.test 等價於 a.te...