iT邦幫忙

2022 iThome 鐵人賽

DAY 7
0

可以先看一下下方心智圖,可以方便我們理解,類別的基礎用法我們在上一篇已經演示給大家看了

pdf檔點這裡
在這心智圖我們可以瞭解基礎的物件導向基礎概念觀念接下來我們做個延伸

練習 : 繼承或取得父類的私有屬性與方法

建立有私有屬性(Private Attribute) 的 class

我們先寫有私有屬性與方法的類 :

class Father_class():
    def __init__(self, example_variable):
        self.example_variable = example_variable    # 定義屬性
        self.__private_attribute = 22

    def Example_method(self):   # 定義方法
        print("this is instance ", self.example_variable)
        print("this is private attribute", self.__private_attribute)

    def __private_method(self):
        print("this is private method")

我們可以看到有一個私有屬性 self.__private_attribute 與私有方法 __private_method

使用__dict__取得__init__所有屬性值

我們可以使用 __dict__ 取得所有公有、私有屬性的值且會以dict的格式呈現

father_object = Father_class(132)
print(father_object.__dict__)   
# {'example_variable': 132, '_Father_class__private_attribute': 22}

將私有屬性(private attribute)放到公有方法(public method)

我們可以在類裡面新增一個 method 且這個 method 可以回傳私有 attribute

class Father_class():
    def __init__(self, example_variable):
        self.example_variable = example_variable    # 定義屬性
        self.__private_attribute = 22

    def Example_method(self):   # 定義方法
        print("this is instance ", self.example_variable)
        print("this is private attribute", self.__private_attribute)

    def __private_method(self):
        print("this is private method")

    def get_privateAttribute(self):
        return self.__private_attribute

    
father_object = Father_class(132)
getVar = father_object.get_privateAttribute()
print(getVar)

繼承父類的初始屬性

先寫一個可以繼承父類的子類別,並且使用super().__init__繼承父類的初始屬性值,如果我們增加self.example_variable=example_variable時會將原來繼承的值覆蓋掉

class Son_class(Father_class):

    def __init__(self, example_variable):
        super().__init__(example_variable)  # 繼承父類初始屬性值

    def son_method(self):
        print("this is son instance ", self.example_variable)

參考資料與資料來源:

讓父系幫助你【使用 super】
[Python物件導向]淺談Python類別(Class)
澎澎的教學網站
澎澎的yt教學頻道


上一篇
Day 06 python 進階入門(2)
下一篇
Day 08 Flask 後端快速開始
系列文
資工琪琪的後端學習筆記(python&flask)30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言