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