python 面向对象的三大特性之一: 多态


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

 

 

 

 

 

 

 

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM