美文网首页Pypython交流学习
面向对象:Python类中的单继承和多继承

面向对象:Python类中的单继承和多继承

作者: 78c40b03ee4e | 来源:发表于2019-03-13 16:00 被阅读30次

前言

Python面向对象编程语言,有List、Str、Dict、Tuple等数据类型,这些数据类型也是对象,比如List类可以有count方法,我们可以通过count方法统计列表中各个元素的数量。

我们可以简单的将定义类理解成就是定义数据结构,同时给这种数据结构制定一些独特的属性或者方法。我们先看最简单的类,在这里我们定义了Point类

#为了显示多个调用的变量
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = 'all'

class Point(object):
    def __init__(self, x=0, y=0):
        self.x = x
        self.y = y

    def String(self):
        #显示Point的信息
        return "{X:" +  str(self.x) + ", Y:" + str(self.y) + "}"

调用类之前我们要实例化,这个可以理解成神笔马良画的画,如果不将其搞活,永远是画。通过实例化,调用实例,画中对象就活了。

#实例化Point类
point = Point(x=3, y=4)

#显示point对象
point 

#显示point的String方法
point.String() 

代码运行结果

<__main__.Point at 0x10d98ec18>

'{X:3, Y:4}'

小编推荐一个学python的学习qun 740,3222,34
无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

单继承

只是继承了 一个 基类 。现在我们定义一个Circle类, 圆是由圆心和半径决定的,所以Circle会继承并使用Point的一些特性。

class Circle(Point):

    def __init__(self, x=0, y=0, radius=0):
        #Circle继承并使用Point的__init__函数
        Point.__init__(self, x, y) 

         #不同于Point的参数radius
        self.radius = radius      


    def String(self):
        #显示Circle的信息
        return Point.String(self) + ", {Radius:" + str(self.radius) + "}"

现在我们看看Circle

#实例化Circle类
circle = Circle(x=3, y=2, radius=5)

#显示circle对象信息
circle

#显示circle的String方法
circle.String()

代码运行结果

<__main__.Circle at 0x10d911c18>

'{X:3, Y:2}, {Radius:5}'

多继承

多继承,顾名思义就是某个类继承了多个父类(基类)

class Size(object):

    def __init__(self, width, height):
        self.width = width
        self.height = height

    def String(self):
        return "{Width: " + str(self.width) + ", Height: " + str(self.height) + "}"  

继续

#实例化Size对象
size = Size(width=5, height=3)

size
size.String()

运行结果

<__main__.Size at 0x10d97e828>

'{Width: 5, Height: 3}'

现在已经有了Point、Size类,以及每个类中的String()方法。现在想构建 正四方形Rectangle类。为了让Rectangle具有Point和Size的一些特性,需要让Rectangle继承Point和Size的一些特有的方法。

class Rectangle(Point, Size):

    def __init__(self, x, y, width, height):

        #让Rectangle使用Point中的init方法,使得Rectangle本身含有x和y属性值
        Point.__init__(self, x, y)
        #让Rectangle使用Size中的init方法,使得Size本身含有width和height属性值
        Size.__init__(self, width, height)

    def String(self):
        return "Rectangle's init point is " + Point.String(self) + "; Size is " + Size.String(self)

Rectangle 继承了 Point 和 Size 两个类,使得Rectangle不用定义 x、y、width、height。而且 Rectangle的String方法 可以直接调用 Point和Size对象的String方法。

#实例化Rectangle
rect = Rectangle(x=0, 
                 y=0, 
                 width=5, 
                 height=3)

#调用rect
rect

#显示其方法
rect.String()

运行结果

<__main__.Rectangle at 0x10d978390>

"Rectangle's init point is {X:0, Y:0}; Size is {Width: 5, Height: 3}"

相关文章

  • 面向对象:Python类中的单继承和多继承

    前言 Python面向对象编程语言,有List、Str、Dict、Tuple等数据类型,这些数据类型也是对象,比如...

  • 继承

    目标 单继承 多继承 面向对象三大特性 封装 根据 职责 将 属性 和 方法 封装 到一个抽象的 类 中 继承 实...

  • python中OOP的继承

    目录 单继承 多继承 面向对象三大特性 封装 根据 职责 将 属性 和 方法 封装 到一个抽象的 类 中 继承 实...

  • python 继承

    继承 目标 单继承 多继承 面向对象三大特性 封装 根据 职责 将 属性 和 方法 封装 到一个抽象的 类 中 继...

  • python面向对象特性多继承(概念、构造方法、代码演练、使用注

    Python中面向对象中的三大特性分别是:封装、继承、多态。继承,子类可以拥有父类的所有属性和方法,之前讲到过单继...

  • GeekBand-OC继承与多态

    面向对象三大特性:封装、继承、多态面向对象三大特性 继承 在OC中,继承为单继承。即每个类只能有一个父类,子类自动...

  • 12. 面向对象(继承/接口/抽象)

    [TOC] 面向对象 继承与派生 继承 什么是继承?继承是一种创建新的类的方式 在python中,新建的类可以继承...

  • Python继承

    python可以分为单继承和多继承; 单继承: 单继承就是继承一个类的时候,现在我们定义一个Student类 然后...

  • 面向对象: Python 类的单继承与多继承

    每种动物都有各自的特性,比如 老鼠会打洞 猫会爬树 鲨鱼会游泳 不同种类有不同的天性。而在程序员的思维中,动物是对...

  • day15 面向对象操作和pygame

    1. 面向对象 1.多继承. 多继承:让一个类继承多个类对象属性只能继承第一个类的对象属性,实际开发中不用 2.多...

网友评论

    本文标题:面向对象:Python类中的单继承和多继承

    本文链接:https://www.haomeiwen.com/subject/nwhtmqtx.html