Python面向对象 | 多态

、多态

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

python:a 可以接受任意数据类型,对象 默认支持多态。

def func(a):
    pass

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

import abc
class Animal(metaclass=abc.ABCMeta):         #同一类事物:动物
    @abc.abstractmethod
    def talk(self):
        pass

class People(Animal):                 #动物的形态之一:人
    def talk(self):
        print(‘say hello‘)

class Dog(Animal):                     #动物的形态之二:狗
    def talk(self):
        print(‘say wangwang‘)

class Pig(Animal):                     #动物的形态之三:猪
    def talk(self):
        print(‘say aoao‘)

多态性

什么是多态动态绑定(在继承的背景下使用时,有时也称为多态性)

多态性是指在不考虑实例类型的情况下使用实例

class Payment:
    def pay(self):pass

class QQpay(Payment):
    def pay(self, money):
        print(‘使用qq支付了%s元‘%money)

class Wechatpay(Payment):
    def pay(self, money):
        print(‘使用微信支付了%s元‘%money)

def pay(pay_obj,money):                 # 统一支付方法
    ‘‘‘
    :param pay_obj: 实例化对象
    :param money: 金钱
    :return: 使用xx支付了xx元
    ‘‘‘
    pay_obj.pay(money)                  # 执行实例化对象的类方法pay

qq = QQpay()
we = Wechatpay()

pay(qq, 100)
pay(we, 200)

‘‘‘
执行输出:
使用qq支付了100元
使用微信支付了200元
‘‘‘

通过执行pay函数,传入不同的参数返回不同的结果,这就是多态

一种接口,多种实现

上面的例子是面向过程的函数加面向对象,实现的。整形效果不好,把函数放到父类里面

class Payment:
    @staticmethod
    def pay(pay_obj,money): # 静态方法.需要通过类名+方法名来调用这个方法
        pay_obj.pay(money)

class QQpay(Payment):
    def pay(self, money):
        print(‘使用qq支付了%s元‘%money)

class Wechatpay(Payment):
    def pay(self, money):
        print(‘使用微信支付了%s元‘%money)

qq = QQpay()
we = Wechatpay()

Payment.pay(qq, 100)
Payment.pay(we, 200) 

‘‘‘
执行输出:
使用qq支付了100元
使用微信支付了200元
‘‘‘

无论是python的2.*还是3.* : 天生自带多态效果

多态通过继承实现

  在python中不需要刻意实现多态,因为python本身自带多态效果

原文地址:https://www.cnblogs.com/Summer-skr--blog/p/11801408.html

时间: 2024-10-12 03:12:32

Python面向对象 | 多态的相关文章

Python面向对象之类的封装、继承与多态

Python面向对象中类的三大特性,即封装.继承与多态,同时也是所有语言在面向对象编程中的重要特性,下面用实际的代码部分针对每一种特性做出说明. 一.封装 顾名思义,封装即把我们想要的内容封装到某个地方,因此在这里记录两个问题,一是如何封装.二是如何调用封装的内容. 1.封装数据 class Company:     def __init__(self, dept, leader):         self.dept = dept         self.leader = leader   

Python 面向对象 组合-多态与多态性-封装-property

面向对象-组合 1.什么是组合 组合指的是某一个对象拥有一个属性,该属性的值是另外一个类的对象 1 class Foo: 2 xxx = 111 3 4 class Bar: 5 yyy = 222 6 7 obj = Foo() 8 obj.attr = Bar() 9 10 print(obj.xxx) 11 >>>111 12 print(obj.attr.yyy) 13 >>>222 2.为何要用组合 通过为某一个对象添加属性(属性的值是另外一个类的对象)的方式

Python面向对象之:三大特性:继承,封装,多态。

前言: python面向对象的三大特性:继承,封装,多态. 1. 封装: 把很多数据封装到?个对象中. 把固定功能的代码封装到?个代码块, 函数, 对象, 打包成模块. 这都属于封装的思想. 具体的情况具体分析. 比如. 你写了?个很?B的函数. 那这个也可以被称为封装. 在?向对象思想中. 是把?些看似?关紧要的内容组合到?起统?进?存储和使?. 这就是封装. 2. 继承: ?类可以?动拥有?类中除了私有属性外的其他所有内容. 说?了, ??可以随便?爹的东?. 但是朋友们, ?定要认清楚?个

19.Python面向对象之:三大特性:继承,封装,多态。

前言: python面向对象的三大特性:继承,封装,多态. 1. 封装: 把很多数据封装到?个对象中. 把固定功能的代码封装到?个代码块, 函数, 对象, 打包成模块. 这都属于封装的思想. 具体的情况具体分析. 比如. 你写了?个很?B的函数. 那这个也可以被称为封装. 在?向对象思想中. 是把?些看似?关紧要 的内容组合到?起统?进?存储和使?. 这就是封装. 2. 继承: ?类可以?动拥有?类中除了私有属性外的其他所有内容. 说?了, ??可以随便?爹的东?. 但是朋友们, ?定要认 清楚

Python面向对象(2)

1.除了封装,Python面向对象还有继承这一功能,如下代码,这是简单的继承功能. class Animal: def chi(self): print(self.name+' 吃') def he(self): print(self.name + ' 喝') class Cat: def __init__(self, name): self.name = name def jiao(self): print('瞄') class Dog(Animal):#继承Animal这个父类,拥有父类的方

Python面向对象详解

Python面向对象的"怜人之处" Python的待客之道--谁能进来 Python的封装--只给你想要的 Python的继承--到处认干爹 Python的多态--说是就是

python 面向对象(进阶篇)

上一篇<Python 面向对象(初级篇)>文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使用(可以讲多函数中公用的变量封装到对象中) 对象,根据模板创建的实例(即:对象),实例用于调用被包装在类中的函数 面向对象三大特性:封装.继承和多态 本篇将详细介绍Python 类的成员.成员修饰符.类的特殊成员. 类的成员 类的成员可以分为三大类:字段.方法和属性 注:所有成员中,只有普通字段的内容保存对象

Python面向对象-day07

写在前面 上课第七天,打卡: 时间的高效利用: 前言: 今天egon老师补充了下 is 和 == 的区别,整理如下:Python中变量的属性以及判断方法 一.面向过程和面向对象 - 1.面向过程 核心是过程,过程就是解决问题的步骤:流水线.机械式: 优点:复杂的问题简单化,分成多个功能单元: 缺点:可扩展性差 应用:Linux内核.httpd.git - 2.面向对象 核心是对象: 要理解对象,应该把自己当做上帝,在上帝眼里一切存在的事物都是对象,不存在的也可以创建出来: 对象是 特征(变量)和

我对 python 面向对象的理解

一.引言 面向对象的编程---object oriented programming,简称:OOP,是一种编程的思想.OOP把对象当成一个程序的基本单元,一个对象包含了数据和操作数据的函数.面向对象的出现极大的提高了编程的效率,使其编程的重用性增高. python面向对象的重要术语: 1.多态(polymorphism):一个函数有多种表现形式 2.继承(inheritance)子项继承父项的某些功能 3.封装(encapsulation)把需要重用的函数或者功能封装,方便其他程序直接调用 4.