python 继承机制
继承机制经常用于创建和现有类功能类似的新类,又或是新类只需要在现有类基础上添加一些成员(属性和方法),但又不想将现有类代码复制给新类。也就是说,通过继承这种机制,可以实现类的重复使用。
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 继承机制的更多相关文章
- <python基础>python继承机制
子类在调用某个方法或变量的时候,首先在自己内部查找,如果没有找到,则开始根据继承机制在父类里查找. 根据父类定义中的顺序,以深度优先的方式逐一查找父类! class D: def show(self) ...
- python 继承机制(子类化内置类型)
1. 如果想实现与某个内置类型具有类似行为的类时,最好的方法就是将这个内置类型子类化. 2. 内置类型子类化,其实就是自定义一个新类,使其继承有类似行为的内置类,通过重定义这个新类实现指定的功能. c ...
- 【Python&数据结构】 抽象数据类型 Python类机制和异常
这篇是<数据结构与算法Python语言描述>的笔记,但是大头在Python类机制和面向对象编程的说明上面.我也不知道该放什么分类了..总之之前也没怎么认真接触过基于类而不是独立函数的Pyt ...
- python继承——封装
python继承--封装 1 为什么要封装 封装数据的主要原因是:保护隐私 封装方法的主要原因是:隔离复杂度 2 封装分为两个层面 第一个层面的封装(什么都不用做):创建类和对象会分别创建二者的名称空 ...
- python 继承与多重继承
当然,如果不支持python继承,语言特性就不值得称为“类”.派生类定义的语法如下所示: <statement-1> . . . <statement-N> 名称 BaseCl ...
- Python——继承
Python的继承是多继承机制,一个子类可以同时有多个直接父类:继承可以得到父类定义的方法,子类就可以复用父类的方法. 一.继承的语法 子类:实现继承的类. 父类(基类.超类):被继承的类. 子类继承 ...
- Javascript 构造函数原型继承机制
我们先聊聊Js的历史,1994年Netscape公司发布了Navigator浏览器0.9班.这是历史上第一个比较成熟的网络浏览器.轰动一时.但是,这个版本的浏览器只能用来浏览,不具备交互功能,最主要的 ...
- javascript继承机制的设计思想(ryf)
我一直很难理解Javascript语言的继承机制. 它没有"子类"和"父类"的概念,也没有"类"(class)和"实例" ...
- javascript 之 prototype继承机制
理解Javascript语言的继承机制 javascript没有"子类"和"父类"的概念,也没有"类"(class)和"实例&qu ...
随机推荐
- C# 获取 PC 序列号
在 C++ 需要使用 GetSystemFirmwareTable 的方法来获得 PC 的序列号,需要写的代码很多,但是在 C# 可以使用 WMI 来拿到序列号 首先是安装 System.Manage ...
- H3C 使用tracert命令
- vue-router再学习
vue路由: 1:动态路由配置 import Vue from 'vue' import Router from 'vue-router' import Index from '@/view/inde ...
- tab选项卡平滑滚动vue
<html lang="en"> <head> <meta charset="UTF-8"> <title>Ti ...
- Python学习(二)语言基础
一.变量与类型 在程序设计中,变量是一种存储数据的载体 整型:Python中可以处理任意大小的整数 浮点型:浮点数也就是小数 字符串型:字符串是以单引号或双引号括起来的任意文本 布尔型:布尔值只有Tr ...
- [工具] Git版本管理(一)(基本操作)
一.版本控制的发展 1.用文件来做版本控制 我们在写论文.做方案等的时候,一般都会同时在文件夹中存在很多版本的文件. 例如: 这种方式很常用,在很多领域都是用这种方式来进行版本控制的. 2.本地版本控 ...
- ng-zorro-antd中踩过的坑
ng-zorro-antd中踩过的坑 前端项目中,我们经常会使用阿里开源的组件库:ant-design,其提供的组件已经足以满足多数的需求,拿来就能直接用,十分方便,当然了,有些公司会对组件库进行二次 ...
- 洛谷P1776 宝物筛选 题解 多重背包
题目链接:https://www.luogu.com.cn/problem/P1776 题目大意: 这道题目是一道 多重背包 的模板题. 首先告诉你 n 件物品和背包的容量 V ,然后分别告诉你 n ...
- 1061 判断题 (15 分)C语言
判断题的评判很简单,本题就要求你写个简单的程序帮助老师判题并统计学生们判断题的得分. 输入格式: 输入在第一行给出两个不超过 100 的正整数 N 和 M,分别是学生人数和判断题数量.第二行给出 M ...
- webpack 实时编译typescript与scss
webpack.config.js const path = require('path'); const CopyWebpackPlugin = require('copy-webpack-plug ...