Python與物件導向三大特性

首頁 >> 升級套件 >> Python與物件導向三大特性

Python本身就是物件導向的程式語言,

說到物件導向就不能不提到其有名的三大特性,

今天就簡單來闡述下

 

Python 與 物件導向三大特性

 

物件導向的三大特性分別是

  • 封裝
  • 繼承
  • 多型

 

封裝

簡單的說將同一類或者同一物的資料與運算打包起來,

就稱之為封裝

以Python為範例,

上面建立了一個矩形類別

class Rectangle:
    def __init__(self, length, width):
        self.length = length
        self.width = width

    def area(self):
        print("area = ", self.length*self.width)

    def Perimeter(self):
        print("perimeter = ", 2*(self.width+self.length))

要求矩形的周長與面積,

如果以函式的話,

勢必得要有兩次長度與寬度的資料傳入函式,

而封裝起來的物件,

僅需要直接調用定義的方法(Method)即可

myrectangle = Rectangle(4, 2)
myrectangle.area()
myrectangle.Perimeter()

 

 

繼承

則是將多個類別的相似處設為一個基礎類別,

各類別再針對個別特性從基礎類別去做延伸,

以貓狗為例子,

class Cat:
    def __init__(self, name):
        self.name = name

    def jumps(self):
        print("jump")

    def runs(self):
        print("run")

    def shout(self):
        print("my name is " + self.name + " meow ")

將定義其跑,跳,叫聲的類別以Python寫出來如上,

同樣在定義狗的時候,

卻重複了跑與跳,

寫兩次雖說不是不可以,

但這就是多餘的,

更何況若有多個類似物件,

重複的步驟可就多了,

這時候就可利用繼承方式將不一樣的挑出來

class Pet:
    def __init__(self, name):
        self.name = name

    def jumps(self):
        print("jump")

    def runs(self):
        print("run")


class Dog(Pet):
    def shout(self):
        print("my name is " + self.name + " bow-wow ")


class Cat(Pet):
    def shout(self):
        print("my name is " + self.name + " meow")

由於貓與狗只有叫聲不同,

將跑與跳定義為Pet類別,

在定義貓與狗時,

分別繼承Pet類別即可

 

 

多型

mycat = Cat("May")
mydog = Dog("Lucky")

mycat.shout()
mydog.shout()

多型讓子類別(貓與狗)呼叫同名的方法(Method      shout)時

呈現各子類別不同之處(貓叫與狗吠)

即有名的   duck typing,

“走路像鴨子,叫聲像鴨子,那它就是鴨子”

例如牛也能有叫聲,

它僅需要在類別中定義shout方法即可

也就是說不在乎是哪一種物件呼叫了同名方法,

只需要該物件有定義此同名方法就好了



================================
分享與讚美,是我們繼續打拼的原動力.
若文章對您有幫助,望請不吝按讚或分享.
或者對影片有興趣可以訂閱頻道接收通知
================================
YouTube 頻道
FB 粉絲專頁
================================

guangyaw

重點主題: 程式設計: Python , Django,Android 工具與軟體: Open edX,Linux工具,Blender教學 分享各地美景與產品使用心得,遊戲實況,甚至影視戲劇等, 您的訂閱就是頻道成長的原動力。 YouTube 頻道: https://youtube.com/xyawli

You may also like...

發佈留言