104學習精靈

物件導向程式設計

物件導向程式設計
關注
邀請朋友
邀請朋友

Line

Facebook

複製連結

取消
關於教室
關注人數 0 人
104人力銀行從職缺中挑選出常見技能所成立的官方教室,提供大家進行共學互動。
學習主持人
持續分享知識,
有機會成為官方教室主持人
關於教室
關注人數 0 人
104人力銀行從職缺中挑選出常見技能所成立的官方教室,提供大家進行共學互動。
學習主持人
持續分享知識,
有機會成為官方教室主持人
Hi~ 歡迎分享學習資源,有學習問題可匿名向Giver發問!
我要分享
我要提問

物件導向程式設計 學習推薦

全部
影片
文章
Mike Ku

Learn Code With Mike品牌創辦人

2021/10/22

Python封裝(Encapsulation)實用教學
Q:什麼是Python封裝(Encapsulation)
封裝(Encapsulation)的概念就有點像權限控制,有些屬性(Attribute)或方法(Method)只想於類別內部使用,而不想公開於外部,除了減少程式碼因來源端不適當的使用發生問題外,也可保護其中重要的商業邏輯。
一般情況下,來源端皆可存取類別中公開的屬性(Attribute)及方法(Method),如下範例:
# 部落格類別
class Blog:
def __init__(self):
self.author = "Mike" # 作者屬性
self.titles = [] # 文章標題屬性
def add_post(self, title): # 新增文章
self.titles.append(title)
blog = Blog()
blog.add_post("Python Programming")
blog.add_post("Learn How to Code")
print("Author: ", blog.author)
print("Blog Titles: ", blog.titles)
如果我們要防止來源端存取作者屬性(Attribute)及呼叫新增文章標題方法(Method),則需透過封裝(Encapsulation)的概念來進行設計。接下來就分別說明如何封裝(Encapsulation)類別中的屬性(Attribute)及方法(Method)。
Q:什麼是私有屬性(Private Attribute)?
在類別(Class)中可以進行存取,而外部無法存取的屬性(Attribute)。使用方式就是在私有屬性(Private Attribute)前加上兩個底線(__),如下範例:
# 部落格類別
class Blog:
def __init__(self):
self.__author = "Mike" # 作者屬性
self.__titles = [] # 文章標題屬性
def __add_post(self, title): # 新增文章
self.__titles.append(title)
blog = Blog()
print(blog.__author)
從範例中可以看到,來源端無法存取到類別中的author及titles私有屬性(Private Attribute)。如果是利用Visual Studio Code來開發Python的話,在來源端物件的IntelliSense清單中就選不到私有屬性(Private Attribute),證明成功將其進行封裝(Encapsulation)。
但是Python不像其他物件導向程式語言真的把屬性(Attribute)或方法(Method)變為私有,事實上來源端還是可以存取得到。Python事實上把加了兩個底線的私有屬性(Private Attribute)重新命名,在前面加上了底線類別名稱,來源端只要透過此名稱還是可以進行存取,如下範例:
blog = Blog()
print(blog._Blog__author) #執行結果為:Mike
所以在類別中的屬性(Attribute)或方法(Method)加上兩個底線(__)主要是告訴來源端此屬性(Attribute)或方法(Method)為私有,避免來源端直接或意外的存取。
Q:什麼是私有方法(Private Method)?
在類別(Class)中可以進行存取,而外部無法存取的方法(Method)。和私有屬性(Private Attribute)作法相同,在私有方法(Private Method)前面加上兩個底線(__),如下範例:
# 部落格類別
class Blog:
def __init__(self):
self.__author = "Mike" # 作者屬性
self.__titles = [] # 文章標題屬性
def __add_post(self, title): # 新增文章
self.__titles.append(title)
blog = Blog()
blog.__add_post("Python tutorials")
如果想要學習更多的Python應用教學,歡迎前往Learn Code With Mike( https://www.learncodewithmike.com/2020/01/python-encapsulation.html )網站觀看更多精彩內容。
0 0 710 0

熱門精選

104學習精靈

產品

6小時前

新鮮人求職趨勢關鍵 x LINE 校園實習及證照
▶ 新手出社會,就業市場關鍵趨勢,你一定要知道!
我們將會講解2024新鮮人,就業市場現況
分享LINE實習計畫,體驗外商文化的你,千萬別錯過
#104就業數據 #LINE實習機會 #新鮮人起薪 #熱門證照 #趨勢產業
▶ 講座將帶你了解
⭐104人力銀行
✔ 企業愛的搶手人才Top3關鍵能力
✔ 新鮮人起薪中位數,別談低了!
✔ 職場學習No.1熱門關鍵字,你跟上了嗎?
✔ 有證照面試邀約,竟然高出..%
✔ 求職市場的關鍵數據,哪個產業最缺人?
⭐LINE
✔ 你不知道的LINE數據
✔ LINE校園招募、實習計畫介紹
✔ 成為 “LINER” 的福利
✔ 行銷人都要有一張!LINE 廣告證照 GREEN MEDAL 認證
0 0 633 0
104學習精靈精選課程
看更多課程
想提升職場競爭力?專業技能課程看起來👇
學習精靈

07/24 00:00

1715 43
Mike Ku

Learn Code With Mike品牌創辦人

2021/10/21

Python繼承(Inheritance)實用教學
Q:如何使用Python繼承?
將共同的屬性(Attribute)或方法(Method)定義在一個類別(Class)中,而其它類別(Class)則透過繼承(Inheritance)的方式來擁有它,如下範例:
class Transportation: # 交通工具
def __init__(self):
self.color = "white"
def drive(self): # 駕駛方法
print("drive method is called.")
class Car(Transportation):
def accelerate(self): # 加速方法
print("accelerate is method called.")
class Airplane(Transportation):
def fly(self): # 飛行方法
print("fly method is called.")
Transportation類別(Class)就叫父類別或基底類別(Base Class),而Car及Airplane類別(Class)就稱為子類別(Sub Class),在類別名稱的地方透過括號的方式來繼承(Inheritance),藉此擁有父類別公開的屬性(Attribute)及方法(Method),如下範例:
mazda = Car()
mazda.drive()
print(mazda.color)
Q:什麼是方法覆寫?
當子類別中定義了和父類別同名的方法(Method),這時候子類別的物件(Object)呼叫這個同名方法時,其中的實作內容將會覆蓋掉父類別的同名方法,這就叫做方法覆寫(Method Overriding),如下範例:
class Transportation: # 交通工具
def drive(self): # 駕駛方法
print("Base class drive method is called.")
class Car(Transportation):
def drive(self):
print("Sub class drive method is called.")
mazda = Car()
mazda.drive()
這時候如果我們想在子類別中執行父類別的方法(Method)時,則可以使用super()內建方法來達成,如下範例:
class Transportation: # 交通工具
def drive(self): # 駕駛方法
print("Base class drive method is called.")
class Car(Transportation):
def drive(self):
super().drive()
print("Sub class drive method is called.")
mazda = Car()
mazda.drive()
Q:什麼是多層繼承?
就是繼承(Inheritance)的層級超過一層以上,如下範例:
class Animal: # 動物類別
pass
class Bird(Animal):
def fly(self):
print("fly")
class Duck(Bird):
pass
duck = Duck()
duck.fly()
Q:什麼是多重繼承?
就是子類別繼承(Inheritance)一個以上的父類別,並且各類別應各司其職,避免有相同的方法,如下範例:
class Animal: # 動物類別
def eat(self):
print("Animal eat method is called.")
class Bird:
def walk(self):
print("Bird walk method is called.")
class Duck(Animal, Bird):
pass
duck = Duck()
duck.eat()
如果想要學習更多的Python應用教學,歡迎前往Learn Code With Mike( https://www.learncodewithmike.com/2020/01/python-inheritance.html )網站觀看更多精彩內容。
3 0 495 0
學習精靈

11/13 00:00

13 1

推薦給你

緯育TibaMe

03/11 10:13

【免費報名】3/18與你分享 跨域轉職正夯,揭密成功轉職心法
想跟著金牌就業培訓講師邁向你的理想職涯嗎?🚀
搶先報名留下轉職煩惱線上就有機會優先解答👉 https://bit.ly/48Tsxh8
年後往往掀起一波轉職潮,企業更釋出大量缺…
或許你不知道根據人力銀行統計「跨領域」轉職趨勢正逐年增高!
追逐理想職涯路上你並不孤單🤗
你缺的只是勇敢跨出的那一步~
▋ 跟著直播離成功更進一步
你將獲得…
🚩 年後全新局面的因應指南
🚩 跨領域轉職是「歸零」還是「未嘗試的成功機會點」?
🚩 7大領域的IT人才進入攻略
🚩 5個月內從0 → 實戰力的核心關鍵
🚩揭密跨域轉職者求職的突破點
本次邀請同時俱 #業界實戰、 #企業主管 、 #轉職就業培訓教學 三大經歷的雙講師線上與你分享一陸以來他們如何幫助眾多學員一個個推向理想職涯的!
▋ 本場講者
李偉銘 老師
軟體產業5年開發、管理、規劃資歷。
曾任資深軟體工程師、技術副理,經手許多金控及公家機關等開發專案。
現任 緯育TibaMe Java雲端服務開發技術養成班、前端工程師專業技術養成班等5大就業養成班授課講師
Reds老師
軟體產業5年開發、管理、規劃資歷。
曾任資深軟體工程師,軟體專案主管。擁有半導體、政府、中小型企業軟體專案開發與維護經驗,包含台灣惠普(HP)、民航局、神腦…等。
現任 微軟C#全端開發工程師養成班 講師
▋ 直播詳細資訊
主題:【揭密年後轉職薪高度TIPS】 5個月內從零基礎到成功跨域就業
時間:3/18(一) 20:00 - 21:00
直播連結:報名後活動當日mail提供
免費報名: https://bit.ly/48Tsxh8
0 0 9402 4
你可能感興趣的教室