博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python 面向对象_继承、组合
阅读量:6090 次
发布时间:2019-06-20

本文共 1157 字,大约阅读时间需要 3 分钟。

今日内容

  • 组合:自定义类的对象作为类的属性
  • 继承:父类与子类、多继承

1.组合

将自定义类的对象作为类的属性
class Teacher:    def __init__(self, name):        self.name = nameclass Student:    def __init__(self, name, teacher):        self.name = name        self.teacher = teachertec = 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中所定义的所有类都是新式类 广度优先

转载于:https://www.cnblogs.com/xt12321/p/10750836.html

你可能感兴趣的文章
Andrew Ng机器学习笔记+Weka相关算法实现(四)SVM和原始对偶问题
查看>>
使用Kotlin开发Android应用
查看>>
汽车行业品牌榜(2016年)--搜索指数
查看>>
Linux: su sudo sudoer
查看>>
错误:OSError: [Errno 1] Operation not permitted: 'lib/python/six-1.4.1-py2.7.egg-info'
查看>>
Jenkins构建脚本中启动tomcat关键
查看>>
Mac命令行启动MySQL
查看>>
MySql(七):MySQL性能调优——锁定机制与锁优化分析
查看>>
MySQL性能优化的最佳21条经验
查看>>
JS中的call、apply、bind
查看>>
SpringCloud如何配置Eureka授权
查看>>
【转】go语言的字节序
查看>>
Mysql系列一:SQL入门
查看>>
蔡文胜谈互联网变化
查看>>
SGU 208 Toral Tickets(polay计数)
查看>>
XML属性
查看>>
【MFC】序列化(Serialize)、反序列化(Deserialize)
查看>>
【转】编译Android系统源码和内核源码
查看>>
【157】扫描仪使用
查看>>
A Complete Tutorial on Tree Based Modeling from Scratch (in R & Python)
查看>>