一. 多態
python面向對象的三大特征之一: 繼承,封裝,多態
多態: python處處是多態(所有的對象都是object的子類的對象)
python : 弱類性語言 ,沒有多態這個概念,處處是多態
python 不管什么類型,傳入函數, 封裝到對象中都可以
python 沒有多態? 他有什么? 他有鴨子類型.
鴨子類型: 看着像鴨子,他就是鴨子.
二. 抽象類, 接口類(補充) from abc import ABCMeta, abstractmethod # (模塊) class Payment(metaclass=ABCMeta): # 抽象類(接口類) @abstractmethod # 規范下面這個方法 (要加規范,必須要有@abstractmethod) def pay(self): # 制定了一個規范 pass
1. 在python中處處是多態
# 這些類里都有一些相同的方法,這些類 , 都互稱為鴨子類型 class Str: def index(self): pass class List: def index(self): pass class Tuple: def index(self): pass
2. 抽象類, 接口類
from abc import ABCMeta, abstractmethod class Food(metaclass=ABCMeta): # 抽象類(接口類) @abstractmethod # 規范下面這個方法 (要加規范,必須要有@abstractmethod) def collect(self): # 制定了一個規范 pass class Fruits(Food): def __init__(self,money): self.money = money def collect(self): print("賣蘋果得了%s" % self.money) class Meat(Food): def __init__(self,money): self.money = money def collect(self): print("賣牛肉得了%s" % self.money) class Drink(Food): def __init__(self,money): self.money = money def collect(self): print("賣冰紅茶得了%s" % self.money) def collect(obj): obj.collect() f1 = Fruits(200) m1 = Meat(1000) d1 = Drink(300) collect(d1) # 歸一化設計