Python入门-面向对象三大特性-多态

Pyhon不支持多态并且也用不到多态,多态的概念是应用于Java和C#这一类强类型语言中,而Python崇尚“鸭子类型”。

python作为一个动态语言,没有强类型的检查,而是以鸭子类型的方式提现,在执行的时候python不严格要求你必须是继承指定的父类而来,只要在调用的时候你有相应的方法和属性就可以了,长的像鸭子你就是鸭子。

#python是动态类,不需要继承父类,只要有共同的方法即可
class Cat(object):
    def say(self):
        print("一只猫")
class Dog(object):
    def say(self):
        print("一只狗")
class Duck(object):
    def say(self):
        print("一只鸭子")
animal = Cat()
animal.say()

print("*"*50)
animal_list = [Cat, Dog, Duck]
for i in animal_list:
    i().say()

抽象类-ABC模块

#当父类有某个方法,要求子类必须也要有这个方法,如何实现呢,使用abc模块即可

import abc
class Ca(metaclass=abc.ABCMeta):
    @abc.abstractmethod
    def get(self, k):
        pass
    @abc.abstractmethod
    def set(self, k, v):
        pass
class Redis2(Ca):
    pass
r = Redis2()
#如果子类,没有实现父类的某个方法,初始化就报错 #TypeError: Can't instantiate abstract class Redis2 with abstract methods get, set

 

posted @ 2021-08-20 09:35  zwx901323  阅读(47)  评论(0)    收藏  举报