一. 多態
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) # 歸一化設計