iT邦幫忙

2024 iThome 鐵人賽

DAY 11
0
Python

python零之旅系列 第 11

DAY11. Python的物件導向

  • 分享至 

  • xImage
  •  

物件導向程式設計(OOP)

物件(Object)為類別(Class)的實例(Instance),我們可以透過編程創建模仿現實生活的物體,並給予屬性。

至於物件和類別有什麼區別呢?
我們舉個生活上的例子:生活中有許多球類,球種就是類別,而球的個體就是物件。

接下來,我們來實際撰寫class類別:

class ball:
    #初始化
    def__init__(self, type, color, year):
       self.type = type
       self.color = color
       self.year = year
       
    def play(self):
        print(self.type + "is playing.")
        
ball1 = ball("Soccer", "white", 2000)
ball2 = ball("baseball", "white", 2020)

ball1.play()

print(ball1, type)
print(ball1, color)

類別變數

類別變數(Class Variables)是屬於類別本身的變數,它們的值對於同一類別的所有實例都是共享的。

換句話說,當類別中的實例對類別變數進行修改時,這一變更會在該類別的所有其他實例中反映出來。

類別變數通常用於儲存與類別相關的通用資訊,這些資訊對於所有實例都具有相同的意義。要定義類別變數,可以直接在類別的定義中、方法之外進行賦值,而不是在 init 方法內。

類別變數能有效地節省記憶體,並在需要共享資料時提供便利,是物件導向程式設計中一個重要的概念。

繼承

繼承(Inheritance)是 Python 物件導向程式設計中的一個重要概念,我們建立一個新類別,並從現有的類別中繼承屬性和方法,從而實現程式碼的重用與擴展。

被繼承的類別稱為「父類別」(Parent Class)或「基礎類別」(Base Class),而新的類別則稱為「子類別」(Child Class)或「衍生類別」(Derived Class)。

子類別不僅可以擁有父類別的所有屬性和方法,還可以根據需要添加自己的屬性和方法,或對父類別的某些方法進行覆寫(Override),以實現更特定的行為。

Python 支援多重繼承,這意味著子類別可以同時繼承多個父類別的特性。繼承使我們能夠以簡單明瞭的方式建立類別之間的關係,並且能夠提升程式的可維護性與可擴展性。

以下將透過範例來熟悉繼承的程式碼:

class People:
    alive = True
    
    def eat(self):
        print("他正在吃飯")
    def sleep(self):
        print("他正在睡覺")
        
class Anna(People):
    def run(self):
        print("他正在跑步")
        
people = People()
people.eat()
anna = Anna()
anna.run()
anna.eat() #因為繼承了父類別,因此可使用

覆寫

方法覆寫(Method Overriding)是物件導向中的一種特性,它能允許此類別重寫父類別的方法,以實現不同的功能或行為。

當子類別繼承了父類別後,通常會獲得父類別的所有方法和屬性,但在某些情況下,子類別需要針對特定需求修改父類別的方法。
此時,子類別可以透過使用相同的方法名稱,重新定義該方法,這個過程就是覆寫。

覆寫能夠讓子類別提供更具體或更適合該類別的功能,同時保留與父類別一致的介面。

以下我們將透過例子來進行覆寫練習:

class Girl:
    def eat(self):
        print("她在吃飯")
        
class Boy:
    def drink(self):
        print("他在喝水")
    pass

class Nick(Boy):
    def eat(self):
        print("Nick在吃麵")
        
class Ike(Boy):
    def eat(self):
        print("Ike在吃水餃")
        
nick = Nick()
nick.nick()
ike = Ike()
ike.ike()

b = Boy()
b.eat() #其可繼承父類別(Girl)

上一篇
DAY10. Python中的檔案
下一篇
DAY12. Python中的方法
系列文
python零之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言