zoukankan      html  css  js  c++  java
  • Python--day25--面向对象之多态

    多态(Python天生支持多态)

    多态指的是一类事物有多种形态

    动物有多种形态:人,狗,猪

     1 import abc
     2 class Animal(metaclass=abc.ABCMeta): #同一类事物:动物
     3     @abc.abstractmethod
     4     def talk(self):
     5         pass
     6 
     7 class People(Animal): #动物的形态之一:人
     8     def talk(self):
     9         print('say hello')
    10 
    11 class Dog(Animal): #动物的形态之二:狗
    12     def talk(self):
    13         print('say wangwang')
    14 
    15 class Pig(Animal): #动物的形态之三:猪
    16     def talk(self):
    17         print('say aoao')

    文件有多种形态:文本文件,可执行文件

    import abc
    class File(metaclass=abc.ABCMeta): #同一类事物:文件
        @abc.abstractmethod
        def click(self):
            pass
    
    class Text(File): #文件的形态之一:文本文件
        def click(self):
            print('open file')
    
    class ExeFile(File): #文件的形态之二:可执行文件
        def click(self):
            print('execute file')

    多态的表现形式:

    鸭子类型:(Python中有鸭子类型,而其他语言如Java没有,所以Python不重尚通过继承对代码进行规范,Python重尚鸭子类型,就像list和tuple这两个这么相似的数据类型都没有用继承---可作为面试时面试官叫你解释一下设计模式接口类的回答)

    例子的代码中List和Tuple就是鸭子类型:

    ps:python不重尚多态

  • 相关阅读:
    PAT 甲级 1115 Counting Nodes in a BST (30 分)
    PAT 甲级 1114 Family Property (25 分)
    PAT 甲级 1114 Family Property (25 分)
    Python Ethical Hacking
    Python Ethical Hacking
    Python Ethical Hacking
    Python Ethical Hacking
    Python Ethical Hacking
    Python Ethical Hacking
    Python Ethical Hacking
  • 原文地址:https://www.cnblogs.com/xudj/p/9919957.html
Copyright © 2011-2022 走看看