python视频学习之类和对象一

目录

面向对象

1. 封装

2.1继承

 2.2多重继承

3.组合 

4. 绑定

 5.构造函数

6.重写 

7. MIXIN

 8.多态

面向对象

  • 面向对象是一种代码封装的方法,主要思想就是将相关的数据和实现的函数给封装到一起。它是一种高级的编程思想,学好它,就可以向造物者创造世界一样创造自己的程序
  • 对象=属性+方法(对象的静态特征称为属性,对象能做的事情称为方法。所谓的属性就是写在类里面的变量,所谓的方法就是写在类里面的函数) 
  • 对象诞生前,要先创造一个类(class),再通过 类 来创造实际的对象【通俗讲:先创造一个模具,再根据模具进行批量生产】
  • 类和对象其实就是模拟现实世界的设计

发现写在turtle类里的函数的参数都是self: 函数放到类里面,必须加上self参数。类中的每一个方法默认的第一个参数都是self,self是实例对象本身

1. 封装
  • 封装是面向对象编程的三个基本特征之一,另外两个是继承和多态
  • 封装:就是在创建对象之前,通过类将相关的属性和方法给打包到一起,然后通过类来生成相应的对象
  • 像前面我们定义turtle类的时候,把甲鱼的特征属性和行为能力给封装到一起,并且可以给甲鱼添加更多的相关属性,使turtle看起来更像一个真正意义上的甲鱼(要注意:不要把不相关的属性和方法放在一起)

python到处是对象何以见得:例如 x=520,x就是一个整数类的实例对象;y="fish",y就是一个str类的实例对象

2.1继承

python的类支持继承,它可以使用现有类的所有功能,并在无需重新编写代码的情况下对这些功能进行扩展。通过继承创建的新类称为“子类”,被继承的类称为“父类or基类or超类”

 判断对象是否属于某个类:isinstance()函数,这是一个BIF

检测一个类是否为某个类的子类:issubclass()函数

 2.2多重继承

python的类支持多重继承,也就是一个子类同时可以继承多个父类

3.组合 

4. 绑定

  

  • 类的实例对象很多,但是这些实例对象是共享类里面的方法,所以当调用实例c.get_self()的时候,实际含义是调用类C的get_self()方法,并将实例对象作为参数给传递进去,进而实现绑定
  • 在实例中,除了类的方法是共享之外,实例的属性可以是自己的。
  • 给实例对象添加属性,可以直接使用点号加上属性名称即可
  •  python是一门支持内省的编程语言,他的对象在运行的时候具有自我观察的能力 ,想知道对象拥有哪些属性,可以通过__dict__进行内省
  • 类和对象的属性是通过字典进行存放的
  • 类和对象并不是必要的,因为几乎所有的实现不使用面向编程也能够实现,并且有时候代码的执行效率可能更高。
 5.构造函数

构造函数有一个特殊的名称叫__init__(),在类中定义__init__()方法,就可以在实例化对象的同时实现个性化定制

6.重写 

如果对于父类的某个属性或某个方法不满意的话,完全可以重新写一个同名的属性或方法对其进行覆盖,这种行为称为子类对父类的重写

 

解决钻石继承的方法:supper函数(能在父类中搜索指定的方法,并自动绑定好self参数)

使用super 函数查找父类方法,它就会自动按照MRO顺序去搜索父类的相关方法,并且自动避免重复调用问题

 注意:如果出现同名的属性或方法,python会有一个明确的查找覆盖顺序,这个顺序就叫MRO(method resolution order方法解析顺序)。要查找一个类的MRO有两种方法,一种是通过MRO方法,另一种是通过MRO属性

7. MIXIN

minxin就是mix-in,是一种设计模式,学习设计模式就是教你打组合拳

注:设计模式就是利用编程语言已有的特性,针对面向对象开发过程中反复出现的问题而设计出来的解决方案

 代码解析:先定义了一个叫animal的类,这个类有构造函数,构造函数需要传入名字和年龄,之后还有一个say的方法;又定义了一个pig类,继承animal类,接着用pig类实例化一个对象p,名字叫小鬼,6岁,调用say方法和special方法得到以上结果

在不修改原有类的代码的结构下,让小鬼飞起来:可以写一个功能是“起飞”的类,通过多继承的方式,写到pig的一个父类即可。(继承一个类,就能使用这个类里面的方法和属性,就像pig类继承animal类的时候,就可以使用say方法,而且pig在实例化的时候也使用了animal 的构造函数),

 8.多态

 多态是面向对象的基本特征之一,它是指同一个运算符、函数或对象在不同场景下具有不同的作用效果的技能

拿运算符举例说明多态
3+5得8
字符串的加法是拼接
3*5得15
字符串的乘法是重复

python的一些函数也支持多态
len()函数:功能是获取一个对象的长度
如果传入的是字符串,得到的就是传入字符串对象的字符个数
如果传入的是列表,得到的是列表中元素的个数
如果传入的是字典,得到的是字典中键的个数

类继承的多态:python允许我们在子类中定义和父类同名的方法,就是说如果我们对父类的某个方法不满意,完全可以在子类中重新定义一个同名的方法进行覆盖,这种操作叫重写,重写就是实现类继承的多态

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值