继承机制经常用于创建和现有类功能类似的新类,又或是新类只需要在现有类基础上添加一些成员(属性和方法),但又不想将现有类代码复制给新类。也就是说,通过继承这种机制,可以实现类的重复使用。

class Shape:
def draw(self, content):
print("画", content)
#class Form(Shape)就表示Form继承Shape
class Form(Shape):
def area(self):
print("此图形的面积为...")
#实现方法为:让Form类继承Shape类,这样当Form类对象调用draw()方法时,python解释器会先去Form中找以draw为名的方法,如果找不到,它会自动去Shape类中找。
python中实现继承的类称为子类,被继承的类称为父类(也可称为基类、超类)。
子类继承父类时,只需在定义子类时,将父类(可以是多个)放在子类之后的圆括号里即可。
注意:如果该类没有显式指定继承自哪个类,则默认继承object类(object类是python中所有类的父类)。
python的继承是多继承机制(和C++一样),即一个子类可以同时拥有多个直接父类。
class People:
def say(self):
print("我是一个人,名字是:", self.name)
class Animal:
def display(self):
print("人也是高级动物")
#同时继承People和Animal类
#其同时拥有name属性、say()方法、display()方法
class Person(People, Animal):
pass
xiaobai = Person()
xiaobai.name = "小白"
xiaobai.say()
xiaobai.display()
我是一个人,名字是: 小白
人也是高级动物
子类拥有父类所有的属性和方法,即便该属性或方法是私有(private)的。

关于python的多继承

使用多继承经常需要面临的问题是,多个父类中包含同名的类方法。对于这种情况,python的处置措施是:根据子类继承多个父类时这些父类的前后次序决定,即排在前面的父类中的类方法会覆盖排在后面的父类中的同名类方法。

class People:
def __init__(self):
self.name = People
def say(self):
print("People类", self.name)
class Animal:
def __init__(self):
self.name = Animal
def say(self):
print("Animal类", self.name)
#People中的name属性和say()方法会覆盖Animal类中的
class Person(Peolpe, Animal):
pass
xiaobai = Person()
xiaobai.name = "小白"
xiaobai.say()
People类 小白

注意:虽然python在语法上支持多继承,但除非逼不得已,建议不要使用多继承。

python 继承机制的更多相关文章

  1. <python基础>python继承机制

    子类在调用某个方法或变量的时候,首先在自己内部查找,如果没有找到,则开始根据继承机制在父类里查找. 根据父类定义中的顺序,以深度优先的方式逐一查找父类! class D: def show(self) ...

  2. python 继承机制(子类化内置类型)

    1. 如果想实现与某个内置类型具有类似行为的类时,最好的方法就是将这个内置类型子类化. 2. 内置类型子类化,其实就是自定义一个新类,使其继承有类似行为的内置类,通过重定义这个新类实现指定的功能. c ...

  3. 【Python&数据结构】 抽象数据类型 Python类机制和异常

    这篇是<数据结构与算法Python语言描述>的笔记,但是大头在Python类机制和面向对象编程的说明上面.我也不知道该放什么分类了..总之之前也没怎么认真接触过基于类而不是独立函数的Pyt ...

  4. python继承——封装

    python继承--封装 1 为什么要封装 封装数据的主要原因是:保护隐私 封装方法的主要原因是:隔离复杂度 2 封装分为两个层面 第一个层面的封装(什么都不用做):创建类和对象会分别创建二者的名称空 ...

  5. python 继承与多重继承

    当然,如果不支持python继承,语言特性就不值得称为“类”.派生类定义的语法如下所示: <statement-1> . . . <statement-N> 名称 BaseCl ...

  6. Python——继承

    Python的继承是多继承机制,一个子类可以同时有多个直接父类:继承可以得到父类定义的方法,子类就可以复用父类的方法. 一.继承的语法 子类:实现继承的类. 父类(基类.超类):被继承的类. 子类继承 ...

  7. Javascript 构造函数原型继承机制

    我们先聊聊Js的历史,1994年Netscape公司发布了Navigator浏览器0.9班.这是历史上第一个比较成熟的网络浏览器.轰动一时.但是,这个版本的浏览器只能用来浏览,不具备交互功能,最主要的 ...

  8. javascript继承机制的设计思想(ryf)

    我一直很难理解Javascript语言的继承机制. 它没有"子类"和"父类"的概念,也没有"类"(class)和"实例" ...

  9. javascript 之 prototype继承机制

    理解Javascript语言的继承机制 javascript没有"子类"和"父类"的概念,也没有"类"(class)和"实例&qu ...

随机推荐

  1. ASP.NET MVC 实现页落网资源分享网站+充值管理+后台管理(2)之创建项目

    我们在创建项目的时候一定要遵循层次和命名的原则,同时也要有统一的规范,无论是多人项目还是单人项目,能够让人看着一目了然并赏析悦目,做一个有追求的程序员. 例如IA.WebApp是视图控制器层(表现层) ...

  2. Spring、Spring Boot和TestNG测试指南 - 使用Spring Boot Testing工具

    Github地址 前面一个部分讲解了如何使用Spring Testing工具来测试Spring项目,现在我们讲解如何使用Spring Boot Testing工具来测试Spring Boot项目. 在 ...

  3. 2018-8-10-win10-uwp-萤火虫效果

    title author date CreateTime categories win10 uwp 萤火虫效果 lindexi 2018-08-10 19:16:51 +0800 2018-2-13 ...

  4. Linux 内核kobject 层次, kset, 和子系统

    kobject 结构常常用来连接对象到一个层级的结构中, 匹配正被建模的子系统的结构. 有 2 个分开的机制对于这个连接: parent 指针和 ksets. 在结构 kobject 中的 paren ...

  5. node-sass安装报错

    npm install --save-dev node-sass --registry=https://registry.npm.taobao.org --disturl=https://npm.ta ...

  6. 微信小程序样式wxss各种问题总结(不断更新)

    1)加入其它样式文件 @import '/css/dialog.wxss'; //注意:必须结尾用分号 2)隐藏滚动条 ::-webkit-scrollbar { width:; height:; c ...

  7. 基于bootstrap3.3.4的简单框架搭建(左侧导航收起滚动)

    前提:博主本人做.net方向的2年多了 去年的后半年公司要做基于bootstrap框架的后台,由于没有经验,然后跟公司美工一块从0开始折腾,对这个框架不是太熟悉,然后就开始各种自己写js写css的往里 ...

  8. 看demo1

    http://pytorch-cn.readthedocs.io/zh/latest/package_references/torch/ pytorch文档 1.json JSON(JavaScrip ...

  9. 2020 中国 .NET 开发者调查问卷

    随着.NET Core 3.1的发布,国内2019 中国.NET开发者峰会在上海的成功举办.从技术采用生命周期的角度来说,随着.NET Core 3.1的发布,有越来越多的厂商开始采用.NET Cor ...

  10. .NET ORM 开源项目 FreeSql 1.0 正式版发布

    一.简介 FreeSql 是 .NET 平台下的对象关系映射技术(O/RM),支持 .NetCore 2.1+ 或 .NetFramework 4.0+ 或 Xamarin. 从 0.0.1 发布,历 ...