Python 入门基础20 --面向对象_继承、组合
今日内容
组合:自定义类的对象作为类的属性
继承:父类与子类、多继承
1.组合
将自定义类的对象作为类的属性
class Teacher:
def __init__(self, name):
self.name = name
class Student:
def __init__(self, name, teacher):
self.name = name
self.teacher = teacher
tec = Teacher('zhangsan')
stu = Student('lisi', tec)
print(stu.teacher.name)
2.继承
2.1 继承
继承:子类与父类形成的一种关系,可以让子类能直接从父类中获取属性与方法
优点:减少代码冗余
2.2 语法
class 类名(父类名):pass
继承关系:
1.父类的所有未封装的属性和方法,子类都能访问
2.父类的所有封装的属性和方法,子类都不能访问
--外界通过子类或子类对象,都不能访问
--在子类内部也不能访问
2.3 方法的重写
有继承关系下的属性查找顺序:
-优先找自身,自身没有找父类
-父类没有找父类的父类
-(python3)一直找到最顶级的父类,如果还没有就报错
抽离-派生理解:
先写子类, 抽离 出父类
先写父类, 派生 出子类
先写好父类的方法,由于父类方法的功能不满足子类需求
子类还可以重写父类方法:方法名与父类相同,自定义方法的实现体
2.4 重用
还需要父类方法的功能,在父类方法的基础上再添加新功能
突破点:在子类中去调用父类的方法,还有保证调用者是子类
2.5 __init__结合super()方法
默认父级的__init__可以被继承过来
但是会出现子类对象的属性比父类多
例子:
def __init__(self, name, salary):
super().__init__(name) # 父级有的共性功能通过super()交给父级做,子类特有的自己来完成
self.salary = salary
2.6 简单的多继承
子类可以继承所有父类的所有可继承属性
属性查找顺序:优先找自己的,没有则按照继承先后顺序查找父级
类名.mro() # 打印属性查找的顺序
2.7 经典类和新式类
经典类:Python2中才有,没有继承任何类的类 深度优先
新式类:Python2中直接或间接继承object的类
Python3中所定义的所有类都是新式类 广度优先
Python 入门基础20 --面向对象_继承、组合的更多相关文章
- python 入门基础21 --面向对象_多态、内置方法、反射
内容: 1.接口思想 2.抽象类思想 3.多态 4.内置方法 5.反射 1.接口思想 建立关联的桥梁,方便管理代码 接口类:用来定义功能的类,位继承它的子类提供功能 该类的功能方法一般不需要实现体,实 ...
- Python入门基础学习(面向对象)
Python基础学习笔记(四) 面向对象的三个基本特征: 封装:把客观事物抽象并封装成对象,即将属性,方法和事件等集合在一个整体内 继承:允许使用现有类的功能并在无须重新改写原来的类情况下,对这些功能 ...
- Python 入门基础19 --面向对象、封装
2019.04.17 一.面向对象与面向过程 二.名称空间操作 三.类与对象的概念 四.语法 五.对象查找属性的顺序 2019.04.18 1.类与对象的所有概念:__init__方法 2.类的方法与 ...
- 二十. Python基础(20)--面向对象的基础
二十. Python基础(20)--面向对象的基础 1 ● 类/对象/实例化 类:具有相同属性.和方法的一类人/事/物 对象(实例): 具体的某一个人/事/物 实例化: 用类创建对象的过程→类名(参数 ...
- Python进阶(十五)----面向对象之~继承(单继承,多继承MRO算法)
Python进阶(十五)----面向对象之~继承 一丶面向对象的三大特性:封装,继承,多态 二丶什么是继承 # 什么是继承 # b 继承 a ,b是a的子类 派生类 , a是b的超类 基类 父类 # ...
- Python 入门 之 初识面向对象
Python 入门 之 初识面向对象 1.初识面向对象编程 (核心--对象) (1)观察以下代码: # 面向过程编程 s = "alexdsb" count = 0 for i i ...
- Python 入门基础6 --字符编码、文件操作1
今日内容: 1.字符编码 2.字符与字节 3.文件操作 一.字符编码 了解: cpu:将数据渲染给用户 内存:临时存放数据,断电消失 硬盘:永久存放数据,断电后不消失 1.1 什么是编码? 人类能够识 ...
- Python入门基础学习 三
Python入门基础学习 三 数据类型 Python区分整型和浮点型依靠的是小数点,有小数点就是浮点型. e记法:e就是10的意思,是一种科学的计数法,15000=1.5e4 布尔类型是一种特殊的整形 ...
- Python入门基础学习 二
Python入门基础学习 二 猜数字小游戏进阶版 修改建议: 猜错的时候程序可以给出提示,告诉用户猜测的数字偏大还是偏小: 没运行一次程序只能猜测一次,应该提供多次机会给用户猜测: 每次运行程序,答案 ...
随机推荐
- java 获取 T.class
转载:http://www.hankcs.com/program/t-class.html @Test public void Test() throws Exception{ Foo<User ...
- 【BZOJ3193】[JLOI2013]地形生成(动态规划)
[BZOJ3193][JLOI2013]地形生成(动态规划) 题面 BZOJ 洛谷 题解 第一问不难,首先按照山的高度从大往小排序,这样子只需要抉择前面有几座山就好了.然而有高度相同的山.其实也不麻烦 ...
- C# try catch语句&获取随机数的方法
try catch语句: try{ //无论如何都会走,必须写: } catch(Exception a){ //Exception报异常,需要定义,需要写输出语句: //如果上面执行失败走,必须写: ...
- json模块和pickle模块(二十二)
之前我们学习过用eval内置方法可以将一个字符串转成python对象,不过,eval方法是有局限性的,对于普通的数据类型, json.loads和eval都能用,但遇到特殊类型的时候,eval就不管用 ...
- 关于next.js中的css
css进行了全局和局部的限制 export default () => ( <div className='hello'> <p>Hello World</p> ...
- select和select的数据渲染,你知道多少呢?
select和option是一对好兄弟,他们是一个很强大的组合.多个元素组合在一起才有的属性,他们两个加起来一切都有了. 所谓的面包也要,鲜花也要,就是这么的任性. 首先看看他们的基本html结构 当 ...
- struct字节对齐原则
原则1:windows下,k字节基本类型以k字节倍数偏移量对齐,自定义结构体则以结构体中最高p字节基本类型的p字节倍数偏移量对齐,Linux下则以2或4字节对齐; 原则2:整体对齐原则,例如数组结构体 ...
- mfc editline 变为大框框
属性:
- (大数 求余) Large Division Light OJ 1214
Large Division Given two integers, a and b, you should check whether a is divisible by b or not. We ...
- 弹指之间 -- Polychord
CHAPTER 19 复合和弦 Polychord 示例歌曲:爱很简单,恰是你的温柔