Python10/23--继承/派生
(继承)
1. 什么是继承?
在程序中继承是一种新建子类的方式,新创建的类称之为子类\派生类,被继承的类称之为父类\基类\超类
继承描述的是一种遗传关系,子类可以重用父类的属性 2. 为何用继承?
减少类与类之间代码冗余的问题 3. 如何继承
先抽象再继承
在python中继承的特点?单继承&多继承
class Parent1(object):
pass class Parent2:
pass class Sub1(Parent1): #单继承
pass class Sub2(Parent1,Parent2): #多继承
pass print(Sub1.__bases__)
print(Sub2.__bases__) print(Parent1.__bases__)
print(Parent2.__bases__) x=2
class Foo:
# x=1
pass
obj=Foo()
# obj.x=3
print(obj.x) python2与python3在继承上的区别
新式类:但凡继承object类的子类,以及该子类的子子类,...都称之为新式类
经典类:没有继承object类的子类,以及该子类的子子类,...都称之为经典类 只有在python2中才区分新式类与经典类
# 在子类派生出的新功能中如何重用父类的功能:
# 方式一: 指名道姓地访问某一个类中的函数,与继承无关
# 方式二: super(OldboyTeacher,self),在python3中super可以不传参数,调用该函数会得到一个特殊的对象,该对象是专门用来访问父类中属性,
# 强调:super会严格参照类的mro列表依次查找属性
# class OldboyPeople:
# school = 'Oldboy'
# def __init__(self, name, age, gender):
# self.name = name
# self.age = age
# self.gender = gender
#
# class OldboyTeacher(OldboyPeople):
# # tea, 'egon', 18, 'male', 10, 3000
# def __init__(self, name, age, gender,level,salary):
# OldboyPeople.__init__(self, name, age, gender)
# # super(OldboyTeacher,self).__init__(name, age, gender)
#
# self.level=level
# self.salary=salary
#
# def score(self,stu,num):
# stu.num=num
# print('老师%s给学生%s打分%s' %(self.name,stu.name,num))
#
# tea=OldboyTeacher('egon',18,'male',10,3000) #__init___(tea,'egon',18,'male',10,3000)
# print(tea.__dict__)
# # print(stu.school) #A没有继承B,
class A:
def test(self):
print('A.test')
super().test()
class B:
def test(self):
print('from B')
class C(A,B):
pass c=C()
c.test()
print(C.mro())
Python10/23--继承/派生的更多相关文章
- Day 23 类的继承,派生,组合,菱形继承,多态与多态性
类的继承 继承是一种新建类的方式,新建的类称为子类,被继承的类称为父类 继承的特性是:子类会遗传父类的属性 继承是类与类之间的关系 为什么用继承 使用继承可以减少代码的冗余 对象的继承 python中 ...
- python基础之继承派生、组合、接口和抽象类
类的继承与派生 经典类和新式类 在python3中,所有类默认继承object,但凡是继承了object类的子类,以及该子类的子类,都称为新式类(在python3中所有的类都是新式类) 没有继承obj ...
- C++中虚继承派生类构造函数的正确写法
最近工作中某个软件功能出现了退化,追查下来发现是一个类的成员变量没有被正确的初始化.这个问题与C++存在虚继承的情况下派生类构造函数的写法有关.在此说明一下错误发生的原因,希望对更多的人有帮助. 我们 ...
- 继承 派生 super()经典类 新式类
'''1什么是继承? 继承一种新建类的方式,在python中支持一个儿子继承多个爹 新建的类称为子类的或者派生类 父类有可以称为基类或者超类 子类会‘遗传’父类的属性 2 为什么要用继承 减少代码冗余 ...
- python 面向对象 继承 派生 组合
具体参考博客:http://www.cnblogs.com/linhaifeng/articles/6182264.html#_label12 一.面向对象 面向对象:对象与对象之间的相互交互,不可预 ...
- PYTHON-面向对象 继承 派生
1. 什么是继承 继承是一种新建类的方式,新建的类称之为子类/派生类,被继承的类称之为父类/基类/超类 继承有3个特点: 1. 子类可以遗传/重用父类的属性(解决类与类之间代码冗余的问题) 2. 在p ...
- Python基础系列讲解——继承派生和组合的概念剖析
Python作为一门面向对象的语言,它的面向对象体系中主要存在这么两种关系,一个是“类”和“实例”的关系,另一个是“父类”和“子类”的关系. 所谓“类”是从一堆对象中以抽象的方式把相同的特征归类得到的 ...
- C++继承 派生类中的内存布局(单继承、多继承、虚拟继承)
今天在网上看到了一篇写得非常好的文章,是有关c++类继承内存布局的.看了之后获益良多,现在转在我自己的博客里面,作为以后复习之用. ——谈VC++对象模型(美)简.格雷程化 译 译者前言 一个C ...
- Python开发基础-Day18继承派生、组合、接口和抽象类
类的继承与派生 经典类和新式类 在python3中,所有类默认继承object,但凡是继承了object类的子类,以及该子类的子类,都称为新式类(在python3中所有的类都是新式类) 没有继承obj ...
随机推荐
- centos 6 和centos 7 系统下vnc配置
一. VNC 服务的大概介绍: VNC (Virtual Network Console)是虚拟网络控制台的缩写.它 是一款优秀的远程控制工具软件,由著名的 AT&T 的欧洲研究实验室开发的. ...
- 什么是PCM?它和.wav文件是什么关系?
PCM(Pulse Code Modulation----脉码调制录音).所谓PCM录音就是将声音等模拟信号变成符号化的脉冲列,再予以记录.PCM信号是由[1].[0]等符号构成的数字信号,而未经过任 ...
- Mac安装MySQL数据库
一 下载及安装社区版MySQL和MySQL Workbench. 二 如果MySQL Workbench无法登陆,则系统偏好设置-MySQL-Initialize Database,选择legacy开 ...
- Python: 定时器(Timer)简单实现
项目分析中发现有网站下载过程中需要发送心跳指令,复习下定时器,其与javascript中实现方法类似. 其原理为执行函数中置定时函数Timer(),递归调用自己,看来实现方法比较拙劣. 假定1秒触发一 ...
- xadmin系列之启动、注册、分发
a.启动首先要加载settings中定义的INSTALLED_APPS列表中的app b.我们进入xadmin的XadminConfig文件 from django.apps import AppCo ...
- 交叉编译libudev
一.交叉编译libudev下载udev-182.tar.xz 下载网址:https://mirrors.edge.kernel.org/pub/linux/utils/kernel/hotplug/ ...
- visual studio build and rebuild 的区别
build 只编译发生改变的dll, (如下, 我只修改了web API,build的时候, 只有webAPI.dll发生更新) rebuild = clean + build (如下, 本项目中dl ...
- linux虚拟机ping不通主机和外网(包括刚装系统遇到的一些问题)
自己ubuntu系统安装了一个virtualBox虚拟机,里面又装了一个ubuntu-server系统: 1.先设置一下字符集,因为一开始装系统的时候选择的是中文,但里面始终无法支持中文,那就算了,反 ...
- Head First Servlets & JSP 学习笔记 第一章 —— 前言和体系结构
URL,Uniform Resource Locatiors,统一资源定位符. http:// www.wickedlysmart.com :80 /beeradivice/select /beer1 ...
- Django日志系统
在Django中使用的日志系统是基于Python中的loggin模块. 首先简单介绍下logging. 一 Loggin模块简介 loggin模块主要包含以下四个部分: Loggers ...