小白學Python的第十六堂課

閱讀時間約 3 分鐘

在第十六課中,我們將繼續深入探討物件導向程式設計 (OOP) 的進階主題,尤其是 Python 中的特殊方法、屬性和繼承的進階概念。

請新建一個檔案 oop_advanced.py

  1. 特殊方法 (Magic/Dunder methods): 這些方法在名稱的前後都有雙底線,如 __init____str__。它們有特定的用途,並且允許你定義物件的某些內建行為。
pythonCopy code
class Book:
def __init__(self, title, author):
self.title = title
self.author = author

def __str__(self):
return f"'{self.title}' by {self.author}"

def __len__(self):
return len(self.title) + len(self.author)

book = Book("1984", "George Orwell")
print(book) # 輸出: '1984' by George Orwell
print(len(book)) # 輸出: 數字 (書名和作者名稱的長度之和)
  1. 屬性 (Property): @property 裝飾器允許你在不調用函數的情況下獲取物件的某個值。
pythonCopy code
class Circle:
def __init__(self, radius):
self._radius = radius

@property
def diameter(self):
return self._radius * 2

circle = Circle(5)
print(circle.diameter) # 輸出: 10 (而不是 circle.diameter())
  1. 超類的初始化 (super()): 當你在一個子類中想要調用其超類的初始化方法時,可以使用 super() 函數。
pythonCopy code
class Animal:
def __init__(self, species):
self.species = species

class Dog(Animal):
def __init__(self, name):
super().__init__("Dog")
self.name = name

dog = Dog("Buddy")
print(dog.species) # 輸出: Dog
  1. 多重繼承: Python 允許一個類從多個父類中繼承。這是一個強大但需要謹慎使用的功能。
pythonCopy code
class Swimmer:
def swim(self):
print("I can swim!")

class Flyer:
def fly(self):
print("I can fly!")

class Duck(Swimmer, Flyer):
pass

duck = Duck()
duck.swim() # 輸出: I can swim!
duck.fly() # 輸出: I can fly!

請在 oop_advanced.py 中輸入並運行上述代碼片段。這些進階的 OOP 概念將為你在 Python 中的編程提供更多的靈活性和表達力

    34會員
    28內容數
    我學習Python的紀錄
    留言0
    查看全部
    發表第一個留言支持創作者!
    Hack_Z的沙龍 的其他內容
    小白學Python的第十堂課
    閱讀時間約 2 分鐘
    小白學Python的第十一堂課
    閱讀時間約 2 分鐘
    小白學Python的第十二堂課
    閱讀時間約 2 分鐘
    小白學Python的第十三堂課
    閱讀時間約 3 分鐘
    小白學Python的第十四堂課
    閱讀時間約 2 分鐘
    小白學Python的第十五堂課
    閱讀時間約 3 分鐘
    你可能也想看
    【Web3小白學習筆記】第二章-區塊鏈上的交易行為:鑄造 Mint在上一章有提到區塊鏈主要是一些點到點的交易紀錄,就像我們一般在買東西一樣,要完成一樁交易會有幾個要件:消費者、供應者、第三方見證者、費用以及商品,在區塊鏈上的交易(Web3稱為鑄造Mint)也是如此,這一章就來了解一下這幾個重要角色。
    Thumbnail
    avatar
    摳屁
    2023-04-27
    【Web3小白學習筆記】第一章-區塊鏈是啥???踏入Web3剛滿一年不久,其實很多區塊鏈的知識、專有名詞都還不是很懂,網路上的資訊雖然很多,但是大部分都寫的很專業,一個新手要去讀懂很難,我自己也是在這個領域慢慢摸索很久,直到現在我才能粗略的了解網路上的文章在寫什麼,希望能藉由這樣的學習筆記自我消化,也能提供給新手更白話、好理解的Web3知識。
    Thumbnail
    avatar
    摳屁
    2023-04-16
    小白貓學好投資-擊破各關卡帶你揭開投資世界自序 什麼是投資小白貓?網路上很常稱呼小白就是什麼都不懂的新手,我覺得叫小白貓比較可愛跟趣味一點,就跟剛出生的貓一樣,對世界充滿好奇心,勇於學習跟嘗試。 這是一本寫給想學好穩健投資的新手入門書,從這本書中主要的幾個章節,可以獲得完整的投資知識,由於內容是設計給投資小白貓們看,因此專有名詞跟使用的語言
    Thumbnail
    avatar
    威利財經生活隨筆
    2021-09-12
    【小白直播C#學習】那個迴圈之10半自學幾天後,終於才進到書中的迴圈!         前後也相繼完成朋友出的作業,實在是萬分感謝他,我也完成了幾個迴圈的小作業,然後又接收到一個要把「阿拉伯數字」變成「中文字」的作業,譬如: 輸入1042顯示一千零四十二。這個我懂,我可是有教過小朋友數學好幾年的老師,另一個學生常見的問題就是1003
    Thumbnail
    avatar
    童曰 Kids Talk
    2021-07-02
    【小白直播C#學習】程式語言之0很久沒有重頭學習個新玩意。         最近,因為疫情的關係,開始學起程式語言。以前就常用RPGmaker做些小遊戲,雖然都常常夭折啦 ! 也因為近期常常使用電腦這個工具來線上上課! 但哪裡知道心中認為的寫程式和實際上差滿多。好佳在有位資深工程師超級好朋友大力幫忙(寄書來、線上被問問題、出功課.
    Thumbnail
    avatar
    童曰 Kids Talk
    2021-06-27
    小白學理財(04):想簡單理財?由錢包整理開始 Hi this is Allee,今天想和大家分享簡單理財的一種方式:整理錢包。 理財小白如我,也可以隨時進行的理財方式。 整理錢包,是正視金錢的開始。 我也曾經是一年換一次錢包、追求長夾,覺得看起來好時尚,好有「大人感」的感覺派。 但錢包裡面卻是亂糟糟的,各種集點卡、統一發票、收據等,常常淹沒
    Thumbnail
    avatar
    Allee
    2021-03-04
    學習只要有興趣就可以開始了-程式小白學Python很多文章都說未來是人工智慧的時代,程式語言是必備能力,靠著一時腦熱蒐集了許多資訊,我想說學習不用很厲害才開始,只要有興趣就開始吧,就算用不到也沒關係!
    Thumbnail
    avatar
    Rita 生活手札
    2021-02-06
    小白學理財(03):用notion開始記帳Hi this is 理財小白 Allee,今天我們用notion開始記帳。 什麼是Notion? Notion是一個筆記軟體,在網頁及行動裝置上皆可以使用。這個軟體的強大之處在於它當中的任何資料都是以「資料庫」的形式建立,因此可以很快地串連相關的頁面。 另一方面,排版的自由度高也是令人欣喜的一點
    Thumbnail
    avatar
    Allee
    2021-02-03
    【365-12】小白學理財(02):如果可以回到從前,我希望爸媽從小和我談錢今天想和大家聊聊和小孩談錢這件事。 最近在聽親子天下的podcast,主題是:「幾歲開始培養兒童金錢觀?」在主持人的解說下,赫然發覺原來7歲前小孩的金錢觀已經大致抵定。 我家的老大目前已滿四歲,出門開始會吵著要買玩具、買吃的喝的。雖然只是小錢,但是該如何溝通「購買」「金錢」,卻是個難題。
    Thumbnail
    avatar
    Allee
    2021-01-19
    小白學理財(01):從記帳到預算(心理建設篇)今天,要和大家聊聊理財這件事。 首先要承認的事情是,我在理財方面,就是小白一枚(其實不只是理財,在很多方面也都是小白。我想這個在今年的寫作中一定會提到)。2020年末,我加入了一個個人成長的社團,相關於個人成長的部分,我也正在積極學習中。但今天,先來聊聊這些年,或者說我開始工作後,理財想法的轉變。
    Thumbnail
    avatar
    Allee
    2021-01-14