請先在 Accupass 活動通報名,並參考課程兌換教學完成課程兌換。
[Day11] 類別(class)與物件導向程式設計
dorishsiao007 Dec 18, 2019
在封裝的範例中,對於 @property & @shout_number.setter 這兩個裝飾器有以下疑問想要釐清,謝謝
@property: 下方範例程式碼意思是將 shout_number 函式經過 @property 裝飾器處理後,可以直接將 shout_number 方法變成屬性提供外部以 "instance.shout_number" 方式直接存取嗎?
@property def shout_number(self): return self.__shout_num
@shout_number.setter: 下方範例程式碼,將 shout_num 函式經過 setter 裝飾後,可直接將 shout_num 函式當作屬性值設定修改屬性值內容(EX: instance.shout_num = 'Cat')嗎?
@shout_number.setter def shout_num(self, num): self.__shout_num = num
這兩個裝飾器查詢後似乎都是內建提供的,封裝概念對個人而言較抽象,所以額外查詢一些文章,發現該篇說明蠻清楚,分享供大家參考XD
https://medium.com/bryanyang0528/python-setter-%E5%92%8C-getter-6c08a9d37d46繼承Class問題,請問如果子類要繼承父類的init方法時,是否父類所有初始化參數都要繼承? 不能只繼承父類的一個參數,執行以下程式碼會出現以下錯誤.
Traceback (most recent call last):
File "main.py", line 18, in
dog_1 = Dog('red', 'Lin')
File "main.py", line 11, in init super().init(name)
TypeError: init() missing 1 required positional argument: 'age'
class Animal:
def __init__(self, name, age):
self.name = name
self.age = age
def run(self):
print('Animal Run!!!')
class Dog(Animal):
def __init__(self, color, name):
super().__init__(name)
self.color = color
def call(self):
print('Dog Call!!!')
dog_1 = Dog('red', 'Lin')
dog_1.call()
dog_1.run()
print(dog_1.name, dog_1.color)
老師:
在作業任務區的 隨堂練習:存取屬性與執行方法 那部份的解答貼錯了