Python的封装继承多态和多重继承 | Python 主题月

简介: Python的封装继承多态和多重继承 | Python 主题月

网络异常,图片无法展示
|



相信你一定知道继承,多态和封装。封装通常是为了提供统一接口而将具体实现过程或者属性以方法或者类的方式对外呈现;继承就是子类继承父类从而拥有父类的方法和属性;多态是继承了同一个父类的不同子类分别重写了父类的某个方法而使得这个方法在不同的子类中有不同的实现。


多重继承即子类继承多个父类,拥有多个父类的方法和属性。


1、封装


比如我们想实现输入两个数字就可以计算其乘积。


第一种方式:


def ret2x(x,y):
    sum=0
    while x>0:
        sum+=y
        x-=1 
    return sum
>>> ret2x(2,8) 
16
>>> ret2x(90,8) 
720
>>>
复制代码


第二种方式:


def ret2x(x,y):
    return x*y
>>> ret2x(2,8) 
16
>>> ret2x(90,8) 
720
>>>
复制代码


可以看到执行结果一毛一样,对于使用者来说,不关注也看不到ret2x的具体实现,只需要调用拿到结果即可。


2、继承


定义Chinese类继承Human类:


class Human(object):
    hum = '人类'
    def kind(self):
        print("人类...")
class Chinese(Human):
    chin = '中国人'
复制代码


执行:


>>> from payhlib import Chinese
>>> c = Chinese()
>>> c.hum
'人类'
>>> c.chin
'中国人'
>>> c.kind()
人类...
>>>
复制代码


Chinese类继承了Human类,所以Chinese的对象拥有了Human父类的hum属性和kind方法。


3、多态


继续在继承的基础上进行演示:


class Human(object):
    hum = '人类'
    def kind(self):
        print("人类...")
    def country(self):
        pass
class Chinese(Human):
    chin = '中国人'
    def country(self):
        print('北京')
class Japanese(Human):
    jap = '日本人'
    def country(self):
        print('东京')
Chinese类和Japanese类分别实现了父类Human的country方法。
复制代码


执行:


>>> from payhlib import *
>>> a = Chinese()
>>> b = Japanese()
>>> a.country()
北京
>>> b.country()
东京
>>> a.kind()
人类...
>>> b.kind()
人类...
>>>
复制代码


中国人和日本人都是人类,但是中国的首都是北京,日本的首都是东京。


4、多重继承


讲了这么多,现在进入正题,我们都知道世界上人类按照性别可以分为男和女。如果我们于上面的Chinese类和Japanese增加性别相关属性和方法,就可以通过多重继承实现。


class Human(object):
    hum = '人类'
    def kind(self):
        print("人类...")
    def country(self):
        pass
class Sex(object):
    summary = '性别类'
    def male(self):
        print('男人')
    def female(self):
        print('女人')
class Chinese(Human,Sex):
    chin = '中国人'
    def country(self):
        print('北京')
class Japanses(Human,Sex):
    jap = '日本人'
    def country(self):
        print('东京')
复制代码


执行:


>>> from payhlib import *
>>> a = Chinese()
>>> b = Japanses()
>>> a.kind()
人类...
>>> b.kind()
人类...
>>> a.male()
男人
>>> b.female()
女人
>>> a.hum
'人类'
>>> a.summary
'性别类'
>>>
复制代码


Chinese类即拥有Human类的方法属性,也拥有Sex类的方法和属性。


多重继承+多态的效果:


class Human(object):
    hum = '人类'
    def kind(self):
        print("人类...")
    def country(self):
        pass
class Sex(object):
    summary = '性别类'
    def male(self):
        print('男人')
    def female(self):
        print('女人')
class Chinese(Human,Sex):
    chin = '中国人'
    def country(self):
        print('北京')
    def male(self):
        print('中国男人')
    def female(self):
        print('中国女人')
class Japanses(Human,Sex):
    jap = '日本人'
    def country(self):
        print('东京')
    def male(self):
        print('日本男人')
    def female(self):
        print('日本女人')
复制代码


执行:


>>> from payhlib import *
>>> a = Chinese()  
>>> b = Japanses()
>>> a.kind()
人类...
>>> b.kind()   
人类...
>>> a.country()
北京
>>> b.country() 
东京
>>> a.male()
中国男人
>>> b.male() 
日本男人
>>> a.female() 
中国女人
>>> b.female() 
日本女人
>>> a.summary  
'性别类'
>>> b.summary 
'性别类'
>>>
复制代码


Chinese类和Japanese类同时继承了Human类和Sex类,所有Chinese的对象和Japanese的对象就拥有了Human和Sex的属性和方法,但是他们又分别重写了父类的country和male即female方法。这种多重继承的方式也称MixIn(混入)。

相关文章
|
3月前
|
Python
用python转移小文件到指定目录并压缩,脚本封装
这篇文章介绍了如何使用Python脚本将大量小文件转移到指定目录,并在达到大约250MB时进行压缩。
45 2
|
7天前
|
算法 Python
Python多继承时子类如何调用指定父类
通过本文的介绍,希望您能够深入理解Python多继承时子类如何调用指定父类的方法,并在实际项目中灵活运用这些技巧,编写出高效且易维护的代码。
22 11
|
6天前
|
算法 Python
Python多继承时子类如何调用指定父类
通过本文的介绍,希望您能够深入理解Python多继承时子类如何调用指定父类的方法,并在实际项目中灵活运用这些技巧,编写出高效且易维护的代码。
28 1
|
3月前
|
关系型数据库 MySQL Python
mysql之python客户端封装类
mysql之python客户端封装类
|
3月前
|
Linux Python
linux 封装 python
linux 封装 python
24 0
|
3月前
|
Linux Python
Linux 下封装 Python
Linux 下封装 Python
19 0
|
Python
Python基础-多态的开闭原则
人的一生,会遇到各种各样的人和事,对于一些不如意的人和事,要学会放弃。
|
Python
Python基础(十六):多态
.封装 根据 职责 将 属性 和 方法 封装 到一个抽象的 类 中
166 0
Python基础(十六):多态
|
15天前
|
人工智能 数据可视化 数据挖掘
探索Python编程:从基础到高级
在这篇文章中,我们将一起深入探索Python编程的世界。无论你是初学者还是有经验的程序员,都可以从中获得新的知识和技能。我们将从Python的基础语法开始,然后逐步过渡到更复杂的主题,如面向对象编程、异常处理和模块使用。最后,我们将通过一些实际的代码示例,来展示如何应用这些知识解决实际问题。让我们一起开启Python编程的旅程吧!
|
14天前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。