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 818 0

熱門精選

104學習精靈

產品

05/31 20:02

【購買指定課程】買就送200元Line Points點數
活動名稱:【購買指定課程】買就送200元Line Points點數
活動期間:2024/6/5 11:00- 2024/7/2 23:59
活動說明:活動期間於104課程中心付費購買「指定課程」,即可獲贈200元Line Points點數回饋。(不累送,單帳號僅有乙次贈送資格,限量100名)
【指定課程如下】
🟣NEW TOEIC 新多益線上高分速成班
🟣GA4+GTM網站數據分析實戰課
🟣SEO搜尋引擎優化七大密技|攻上頂端排名寶座
🟣微軟 Azure|通關 AZ-104 認證攻略,邁向雲端 IT 管理之路
🟣Power BI 零基礎實戰 | 培養商務數據分析力
🟣告別新手村FB與IG廣告投放攻略|AI助你輕鬆提高廣告效率
🟣Jen 的一分鐘英文短講會話術
🟣Jumbo 的多益單字獨門記憶法
🟣PyTorch生成模型全解析|從生成式對抗網路到擴散模型
🟣超熙利!一門課搞定你的英文履歷面試
🟣(最新版.NET 6)ASP.NET Core MVC 無痛快速上手
🟣上班族開會英語線上實戰班
【活動注意事項】
1. 獲贈資格須符合下列說明:
(a)指定課程購買者必須於104課程中心系統完成付費紀錄。( 特別提醒:於TibaMe 官網線上消費之購買者,不適用於本次活動資格。)
(b)訂單成立且完成付款時間皆須於2024年7月2日23:59前,並於7天內完成課程兌換,始符合獲贈點數回饋的資格;最後獲贈者將公告於本活動網站,中間姓名會隱藏。
(d)限量100名之回饋名額,採上述依照訂單完成消費付款之前100名,符合上述資格的前100名會員,單帳號僅有乙次贈送資格,因點數作業時間,您的回饋點數最晚將於2024/7/31-2024/8/10前寄送至您購買時填寫的e-mail電子郵件信箱。
2.本次贈送的200元Line Points點數,點數發送後請於規範時間內完成兌換,點數兌換後於180天內須使用完畢,逾期失效。
3.如您有任何問題,歡迎來信nabiservice@104.com.tw
4.104課程中心保有最終修改、變更、活動解釋及取消本活動之權利。
- - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - -
【主活動】職場先修班
【其他活動】職場先修班開跑了!【緯育TibaMe】限時全館 86折折扣碼
【其他活動】【購買指定課程】買就送100元Line Points點數
0 0 3953 1
學習精靈

07/24 00:00

1867 45
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 520 0
學習精靈

11/13 00:00

13 1

推薦給你

104學習精靈

產品

39分鐘前

Nvidia 成為全球最有價值的公司 - 學習10個英語單字和片語 - 歷史新高、市值、迅速崛起、成為焦點英文
在這篇文章中,我們將探討Nvidia這家全球最有價值公司的成功故事,並從中挑選出10個值得學習的英語單字和片語,這些單字和片語不僅能增強你的英語詞彙量,還能幫助你在閱讀科技新聞時更好地理解內容。
1. All-time high
- 中文解釋:歷史新高
- 英文用法:The company's stock price reached an all-time high on Tuesday.
2. Market cap (Market Capitalization)
- 中文解釋:市值
- 英文用法:Nvidia's market cap is now worth $3.34tn.
3. Meteoric rise
- 中文解釋:迅速崛起
- 英文用法:The company's meteoric rise has been fueled by its dominance in AI chips.
4. Front and center
- 中文解釋:成為焦點
- 英文用法:The race to $4 trillion market cap in tech will be front and center between Nvidia, Apple, and Microsoft.
5. Boom
- 中文解釋:繁榮,激增
- 英文用法:Nvidia has benefited from a boom in demand for chips that train and run generative AI models.
6. High profile
- 中文解釋:高調,知名度高
- 英文用法:The rise of the tech giant has been mirrored by the increasingly high profile of its boss, Jensen Huang.
7. Fierce competition
- 中文解釋:激烈的競爭
- 英文用法:Competition among AI developers is fierce, benefiting Nvidia.
8. Cleared a high hurdle
- 中文解釋:跨過高門檻,達到高標準
- 英文用法:The company had once again cleared a very high hurdle with its latest financial results.
9. Monetize
- 中文解釋:變現
- 英文用法:Analysts questioned how Nvidia’s customers would monetize AI software.
10. Dominance
- 中文解釋:主導地位
- 英文用法:Nvidia's dominance in the AI chip market has been a key factor in its growth.
0 0 21 0
你可能感興趣的教室