• 面向对象——多态性


    • 多态:指的是一类事物有多种形态,比如,动物有多种形态:人,狗,猪
    • 多态性:指在不考虑实例类型的情况下使用实例,多态性分为静态多态性和动态多态性
      • 静态多态性:如任何类型都可以用运算符+进行运算
      • 动态多态性:通过定义一个统一的接口来使用
    • 好处
      • 增加程序的灵活性:以不变应万变,不论对象千变万化,使用者都是用同一种形式去调用,如
        func(animal)
      • 增加程序的可扩展性
        • 通过继承animal类创建一个新的类,使用者无需更改自己的代码,还是用func(animal)去调用
     1 #多态:同一类事物的多种形态
     2 import abc
     3 class Animal(metaclass=abc.ABCMeta): #同一类事物:动物
     4     @abc.abstractmethod
     5     def talk(self):
     6         pass
     7 
     8 class People(Animal): #动物的形态之一:人
     9     def talk(self):
    10         print('say hello')
    11 
    12 class Dog(Animal): #动物的形态之二:狗
    13     def talk(self):
    14         print('say wangwang')
    15 
    16 class Pig(Animal): #动物的形态之三:猪
    17     def talk(self):
    18         print('say aoao')
    19 
    20 class Cat(Animal):
    21     def talk(self):
    22         print('say miamiao')
    23 
    24 #多态性:指的是可以在不考虑对象的类型的情况下而直接使用对象
    25 peo1=People()
    26 dog1=Dog()
    27 pig1=Pig()
    28 cat1=Cat()
    29 
    30 # peo1.talk()
    31 # dog1.talk()
    32 # pig1.talk()
    33 
    34 def func(animal):
    35     animal.talk()
    36 
    37 
    38 func(peo1)#say hello
    39 func(pig1)#say aoao
    40 func(dog1)#say wangwang
    41 func(cat1)#say miamiao
    •  鸭子类型
      • python崇尚鸭子类型,即如果看起来像,叫声像而且走起路来像鸭子,那么它就是鸭子
      • python程序员通常根据这种行为来编写程序。例如,如果想编写现有对象的自定义版本,可以继承该对象
      • 也可以创建一个外观和行为像,但与它无任何关系的全新对象,后者通常用于保存程序组件的松耦合度
      •  1 #序列类型:列表list,元祖tuple,字符串str
         2 
         3 l=list([1,2,3])
         4 t=tuple(('a','b'))
         5 s=str('hello')
         6 
         7 # print(l.__len__())
         8 # print(t.__len__())
         9 # print(s.__len__()
        10 
        11 # def len(obj):
        12 #     return obj.__len__()
        13 
        14 print(len(l))
        15 print(len(t))
        16 print(len(s))
        序列类型
  • 相关阅读:
    android -------- Data Binding的使用(二)
    牛客网-《剑指offer》-数值的整数次方[快速幂运算]
    牛客网-《剑指offer》-二进制中1的个数
    牛客网-《剑指offer》-矩形覆盖
    牛客网-《剑指offer》-变态跳台阶
    牛客网-《剑指offer》-跳台阶
    牛客网-《剑指offer》-斐波那契数列
    牛客网-《剑指offer》-旋转数组的最小数
    牛客网-《剑指offer》-用两个栈实现队列
    牛客网-《剑指offer》-重建二叉树
  • 原文地址:https://www.cnblogs.com/GraceZ/p/8079245.html
Copyright © 2020-2023  润新知