一. 多态
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) # 归一化设计