第五章python面向对象基础详解

一.理解面向对象

面向对象就是将编程当成一个事物,对外界来说,事物是直接使用的,不用去管内部情况。编程就是设置事物做什么事情。

二、类和对象

  1. 对象是类的实例,类是一个抽象的概念
  2. 开发中先有类在有对象
  3. 创建类的语法
    class 类名(): //类名命名规则为大驼峰
      代码
  4. 创建对象的语法
    对象名 = 类名()
  5. self//指的是调用该函数的对象
  6. 一个类可以创建多个对象,self内存地址不相同

三、添加和获取对象属性

类外
类内

  1. 类外添加对象属性
    语法:对象名.属性名 = 值
  2. 类外面获取对象属性的值
    对象名.属性名
  3. 类内获取对象属性
    self.属性名

四、魔法方法

__ xx __()的函数叫魔法方法

  1. __init__(self)//初始化对象不用对象调用,默认函数,创建对象自动调用
  2. 带参数的__init__(self,pramrm1,pramrm2)
    ​ 对象名 = 类名(默认函数参数)
  3. __str__()//打印对象不再输出对象的内存地址,而是输出__str__方法的return返回值//return一般是类或者对象的说明//return相当于print
  4. __del__()//删除对象时自动调用
  5. 烤地瓜
    ​ 需求:属性:烤的时间,地瓜状态,添加调料
    ​ 方法:烤的时间 ,添加调料
  6. 搬家具:将小于房子剩余面积的家具摆放到房子

五、继承

继承的概念
单继承
多继承
子类重写父类的同名属性和方法
子类调用父类的同名属性和方法
多层继承
super()
私有属性和私有方法

  1. 解释器版本不同有两种类的定义
    python2经典类
    class 类名:
    代码
    、、、
    python3新式类
    class 类名(object): //object为继承的类
    代码
    、、、

  2. Python中,所有类默认继承object类,object类是顶级类或基类;其他子类叫做派生类

  3. 子类可以继承父类的方法

  4. 单继承//一个类继承另外一个类的所有属性和方法
    煎饼果子继承实例

  5. 多继承//一个类继承多个类
    class 类名(继承类1,继承类2):
    pass
    当一个类有多个父类的时候,默认使用第一个父类的同名属性和方法

  6. 子类重写父类的同名属性和方法
    如果子类和父类有同名属性和方法,在创建子类对象的时候调用的是子类的方法和属性

  7. print(类名.__mro__)//查看继承关系

  8. 子类调用父类的同名属性和方法
    在子类里定义函数,函数中使用父类.方法(self)来调用父类中的方法和属性,使用父类调用初始化魔法方法
    如果是先调用了父类的属性和方法,父类属性会覆盖子类属性,故在调用属性前,先调用自己子类的初始化
    调用父类方法,但是为保证调用到的也是父类的属性,必须在调用方法前调用父类的初始化
    括号里都要写self//接受将来传入的对象

  9. 多层继承
    子类可以继承父类的父类

  10. super()调用父类方法
    super(当前类名,self).函数()
    super().函数()
    super()可以自动查找父类,调用遵循_mro_类属性的顺序,比较适合单继承使用.//多继承会怎么样??

  11. 私有权限//不将属性和方法传给子类,子类不可调用
    设置私有权限的方法:在属性名和方法名前面加上两个下划线

  12. 获取和修改私有属性值//利用子类对象.父类函数来获取修改
    在Python中,一般定义函数名get_xx用来获取私有属性,定义set_xx用来修改私有属性

  13. 面向对象三大特性
    封装:
    将属性和方法写到类里面的操作即为封装
    封装可以为属性和方法添加私有权限
    继承:
    子类默认继承父类的所有属性和方法
    子类可以重写父类属性和方法
    多态:
    传入不同的对象,产生不同的结果
    13.1 多态是一种使用对象的一种方式,子类重写父类方法,调用不同子类对象的相同父类方法,可以产生不同的执行结果
    警务人员和警犬一起追击敌人和毒品
    Step1:定义父类。提供公共方法 Step2:定义子类,子类重写父类方法
    Step3:创建对象,调用不同的功能,传入不同的对象,观察执行的结果
    类属性和实例属性

  14. 类属性就是类对象所拥有的属性,他是该类的所有实例对象所共有

  15. 类属性可以使用类对象(类名.属性)或实例对象(对象名.属性)访问

  16. 记录的某项数据始终保持一致,则定义类属性,更节省内存空间。

  17. 类属性只能通过类对象修改,不能通过实例对象修改,实例对象修改是创建一个和类属性同名的实例属性。 类属性和实例属性的区别???
    类方法和静态方法
    1.类方法:需要用装饰器@classmethod来标识类方法,第一个参数必须为类对象,一般以cls作为第一个参数
    2.访问私有属性时,定义类方法
    3.类方法一般和类属性配合使用
    4.@classmethod
    def 函数名(cls):
    代码
    、、、
    5.静态方法需要通过装饰器@staticmethod来修饰 ,静态方法既不需要传递类对象也不需要传递实例对象(形参没有self/cls)
    6.静态方法也能够通过实例对象和类对象去访问
    7.方法中既不需要使用实例对象,也不需要使用类对象时,定义静态方法
    8.取消不需要的参数传递,有利于减少不必要的内存占用和性能消耗

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值