运维开发网

python 笔记1

运维开发网 https://www.qedev.com 2020-03-11 09:32 出处:51CTO 作者:young27
1.类和对象的成员分析类存储成员时使用的是与类关联的一个对象创建对象(实例化)的时候,类中的成员不会放入对象当中,而是得到一个空对象,没有成员当对象需要访问类中成员时,属于借用2.关于selfself在对象的方法中表示当前对象本身,如果通过对象调用一个方法,那么该对象会自动传入到当前方法的第一个参数中方法中有self形参的方法成为非绑定类的方法,可以通过对象访问,没有self的是绑定类的方法,只能

1.类和对象的成员分析

  • 类存储成员时使用的是与类关联的一个对象
  • 创建对象(实例化)的时候,类中的成员不会放入对象当中,而是得到一个空对象,没有成员
  • 当对象需要访问类中成员时,属于借用

2.关于self

  • self在对象的方法中表示当前对象本身,如果通过对象调用一个方法,那么该对象会自动传入到当前方法 的第一个参数中
  • 方法中有self形参的方法成为非绑定类的方法,可以通过对象访问, 没有self的是绑定类的方法, 只能通过类访问

3.封装中的定义

  • 封装:将相应成员进行权限控制,该公开的公开,私有的私有
  • public,private,protected不是关键字
  • python中下划线使用
  • Python的私有和保护不是真私有,是一种成为name_mangling的改名策略 可以使用
    • 私有:在成员前面添加两个下划线即可 __age = 18
    • 保护:在成员前面添加一个下划线即可 _neakname = "二狗子"

4.继承

  • 继承:继承父类公有和保护成员,提高复用率
  • 所有的类都继承自object类,即所有的类都是object类的子类
  • 子类继承父类后并没有将父类成员完全赋值到子类中,而是通过引用关系访问调用
  • 继承语法 class b(a): --表示b继承a

    -子类如果想扩充父类的方法,可以在定义新方法的同时访问父类成员来进行代码重用, 可以使用 [父类名.父类成员] 的格式来调用父类成员,也可以使用super().父类成员的 格式来调用

    class Person():

    def work(self):

    print("make some money")

    class Teacher(Person):

    def work(self):

    扩充父类的功能只需要调用父类相应的函数

    #Person.work(self)
    # 扩充父类的另一种方法
    # super代表得到父类
    super().work()
    self.make_test()
  • 构造函数:如果子类没定义,父类的构造函数带参数,则构造对象时的参数应该按父类参数构造
  • super:super的作用是获取MRO(MethodResolustionOrder)[ _mro_ ]列表中的第一个类
  • 关于多继承的MRO
    • MRO就是多继承中,用于保存继承顺序的一个列表
    • python本身采用C3算法来多多继承的菱形继承进行计算的结果
    • MRO列表的计算原则:
    • 子类永远在父类前面
    • 如果多个父类,则根据继承语法中括号内类的书写顺序存放
    • 如果多个类继承了同一个父类,孙子类中只会选取继承语法括号中第一个父类的父类

5.多态

  • 多态就是同一个对象在不同情况下有不同的状态出现
  • 多态性: 一种调用方式,不同的执行效果
  • 多态与多态性
0

精彩评论

暂无评论...
验证码 换一张
取 消