Hi 大家好,
今天要開始介紹基礎語法中的物件導向篇之續集,那我們開始吧!
Q: 什麼是多型?
A: 就是允許同一個方法
在不同的類別
中,實作不同的行為,會得到不同的執行結果
。
舉個例子如下:
Dog
、Cat
、Bird
相同名稱
的方法speak(),只是方法內實作的細節不一樣class Dog:
def speak(self):
print("Woof!")
class Cat:
def speak(self):
print("Meow!")
class Bird:
def speak(self):
print("Tweet!")
dog = Dog()
cat = Cat()
brid = Bird()
dog.speak()
cat.speak()
brid.speak()
PS D:\Project\practice> python hi.py
Woof!
Meow!
Tweet!
PS D:\Project\practice>
print(id(Dog.speak))
print(id(Cat.speak))
print(id(Bird.speak))
PS D:\Project\practice> python hi.py
2201429200864
2201429201024
2201429201184
PS D:\Project\practice>
Q: 什麼是依賴注入?
A: 指的將一個類別所需的依賴項目(即其他類別或物件)透過外部傳入的方式注入到這個類別中,而不是在類別內部自行建立這些依賴項目。
舉例說明:
Basketball
、Football
,和一個學生類別Student
hobby
,也可以執行嗜好類別中定義的方法play
Student
中的change_hobby方法,重新設定喜歡的項目class Basketball:
name = 'basketball'
def play(self):
print('play basketball.')
class Football:
name = 'football'
def play(self):
print('play football.')
class Student:
def __init__(self, name, hobby):
self.name = name
self.hobby = hobby
print('My name is %s and %s is my hobby.'%(self.name, self.hobby.name))
def change_hobby(self, hobby):
self.hobby = hobby
print("%s changes hobby to %s" % (self.name, self.hobby.name))
def play(self):
print(self.name, end = ' ')
self.hobby.play()
# 定義學生喜歡的運動項目
Leo = Student('Leo', Basketball())
# 執行運動項目中的方法
Leo.play()
# 改變喜歡的運動項目
Leo.change_hobby(Football())
# 重新執行運動項目中的方法
Leo.play()
PS D:\Project\practice> python hi.py
My name is Leo and basketball is my hobby.
Leo play basketball.
Leo changes hobby to football
Leo play football.
PS D:\Project\practice>
那今天就介紹到這裡,我們明天見~