2019/08/30 python类(07)

python的函数模块和控制流程在这里插入图片描述
python中 oop概念 object oriented programing 面向对象编程在这里插入图片描述
面向对象编程时以数据为核心
事先把整个程序运行过程中,先抽象成一个个类,将类实例化成对象后,让对象之间互操作,完成程序执行,
每个对象支持的数据加工方式是事先定义好的,
在这里插入图片描述在这里插入图片描述在这里插入图片描述
抽象指的是
在这里插入图片描述
比如提供的接口。有一定的计算能力,很多问题和提供的计算能力不是对应的,就要让2者通过程序员建立联系在这里插入图片描述
把实例想象成一种新型变量,可以保存数据,甚至可以保存对自己支持 的数据的操作的办法在这里插入图片描述

类就是用户自定义的类型,这个类型内部通告一些属性能保存数据,
给类真正赋值的过程就是实例化
类就是用户自定义的保存特定格式的数据类型,把这些类型中的属性进行赋值,从而能实例化具体的类型出来
在这里插入图片描述
类型是由状态集合和转换这些状态的操作集合组成
状态集合称为类属性,转换这些状态的操作称为类方法
在这里插入图片描述在这里插入图片描述
方法只是对里面的数做操作的,也可以互操作,把其他的成员内容,在当前成员上执行某些操作,
一个类的行为和接口是通过方法来定义的
方法有两类,私有和公共
私有:只在自己内部使用
公共:外部可见

在这里插入图片描述在这里插入图片描述
类名叫灯泡
对应接口有on,off,brighten 调高亮度,dim调暗亮度
每一个对象仅支持在类的接口所定义的操作

在这里插入图片描述
特定的请求就是方法所来规定的
在这里插入图片描述在这里插入图片描述
消息传递就是调用,有个整数保存在变量名i1上,这种调用就等于向其传递了一个消息在这里插入图片描述
对象是可以嵌套的
在这里插入图片描述在这里插入图片描述
有什么接口就能接受什么消息
在这里插入图片描述
下面就可以发4种消息
在这里插入图片描述
类和类有这样三种关系
依赖 a-uses-b a用到了b类,没有b无法运行
聚合 a当中包含了b,类a包含了类b的对象
继承 描述特殊与一般关系
在这里插入图片描述
继承,先拥有动物的特性,再拥有自己独有的特性在这里插入图片描述在这里插入图片描述在这里插入图片描述
父类也叫基类,超类
子类也叫派生类
在这里插入图片描述在这里插入图片描述在这里插入图片描述
init来初始化,事先实例出一个对象来
del用来销毁对象的
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
**创建类:
class ClassName(bases):从哪个父类进行继承
‘class documentation string’ 类文档
class_suite **

(1)类体可以包含:声明语句、类成员定义(数据成员、方法)
任何赋值语句都会创建类属性,
(2)如果不存在继承关系,基类bases可以为空
(3)类本身是可执行代码,直到运行后类对象才会存在,类可以实例化出来属于这个类的对象
class一执行有class对象,但是没有实例对象,只有对类做new以后才叫做实例化对象

(4)实例化的方法:instance_name=ClassName()表示类被调用,生成出来一个对象,每个是对象都会继承属性,获得自己的名称空间
每个实例对象都会继承 类的属性,并获得自己的名称空间;
(a其实在class中定义的) l1.a=
方法属于类,并不属于实例对象,实例对象主要是提供数据结构的

第一行就是文档,可以调用类文档在这里插入图片描述
只有运行到它,类才会存在,非编译式语言,只能先定义后使用

在这里插入图片描述
def函数就是个方法,方法通常用来操作数据的
要想对实例进行调用,有两种机制
方法调用+()
每个实例对象相当于带有数据的记录,方法属于类,不属于对象,可以通过对象来调用类的方法,
在这里插入图片描述在这里插入图片描述
有个类叫myclass,myinstance.
有方法method
调用myinstance.method()方法 相等于调用,myclass.method(myinstance)
每一次调用方法,相当于把实例化对象当参数传递给方法
必须有self参数,必须放在第一个,就是为了能接受基于累调用方法,把当前实例对象当参数传递给方法的一个接口
在这里插入图片描述
因为方法式用来处理实例的,必须基于实例来调用方法,能把当前实例当参数给传递方法在这里插入图片描述
类属性对子类中的每一个对象都生效,而实例对象仅对当前实例有效,在类当中 ,赋值这种方法很少用,最多用来初始化在这里插入图片描述
x。name式实例后的属性要通过方法调用生成的
在这里插入图片描述
init就是初始化的方法,这就是wsm上面的x有gender属性
所以init方法也被称为构造器
在这里插入图片描述
自我初始化的,能够构造一个对象应该拥有的所有功能来
在这里插入图片描述
为了让某一个类实例化对象出来以后,让对象立即拥有自己专用的数据,需要在定义类时定义一个init方法在这里插入图片描述在这里插入图片描述
定义了两个对象,tom,jerry
hello传递给voice关键字参数

在这里插入图片描述
dir函数可以获取类的属性在这里插入图片描述
对整数来讲,取绝对值,加法运算等,这些方法只是构造一个特殊的定义i1=123,会调用自己的init方法在这里插入图片描述
也可以用这个来获取。__dict__字典属性,获取类属性在这里插入图片描述
告诉你属性和作用是什么键值对
int.dict
在这里插入图片描述在这里插入图片描述
class表明是哪个类创建生成的
dict基于字典方式保存的属性

方法属于类的在这里插入图片描述在这里插入图片描述
i1的属性时int类继承来的在这里插入图片描述
dict基于自己字典方式保留的属性在这里插入图片描述在这里插入图片描述
legb,local,e表示外层函数,G全局,b内建的,builtin
使用self+变量名引用的叫实例变量
全局变量属于模块级变量
在这里插入图片描述在这里插入图片描述在这里插入图片描述
类变量
在这里插入图片描述
类在实例化对象后,会继承类的变量,在自己的名称空间会保留一份在这里插入图片描述
**类下面实例化了两个对象,当在1个对象引用spam时候,这个对象没有spam就去找类,类还没有就去找全局的,
x.spam=abc赋值abc,意味在实例自己的名称空间创建一个spam属性赋值abc,另外的spam还是hello,y自己没有就到上面去找,就是hell0,爬树
**在这里插入图片描述在这里插入图片描述
所有的print适合python2的, 3要换成()小括号在这里插入图片描述
对象式编程三个重要概念,封装继承,多态
派生类=子类
多重继承代表可以从多个人那里获得遗产
在这里插入图片描述在这里插入图片描述
父类的方法子类都可以使用
dir获取一个类所支持的所有方法
在这里插入图片描述在这里插入图片描述
i1是实例,c3是类,c1,12父类
在这里插入图片描述
基于c3创建实例i1的时候,说明i1会把自己连接至c3,同时每个子类链接它的父类
继承就是由下而上,搜索此树,找出名称空间位置
如果调用i1.a会先再i1找有没有a,没有就找c3,没有,再找c1,由左而右,就是下面定义的顺序,给定的顺序决定了他们搜索的顺序
由下而上,由左往右
在这里插入图片描述在这里插入图片描述
继承这种概念会导致子类从父类中即会继承爬树的方式,数据属性也就会继承方法,子类也可以无视
超类=父类在这里插入图片描述在这里插入图片描述
父类定义gender,子类定义name,根据子类实例化对象,子类中的名字,方法和父类的setinfo一样,所以子类把父类的重写覆盖了在这里插入图片描述在这里插入图片描述
调用 了父类的方法,子类在原来的方法内调用了父类的方法
自己定义完自己所实现的操作后,把父类的方法调用了一遍,回调,所以没有实现覆盖,实现了扩展
在这里插入图片描述在这里插入图片描述第一个类是不是第二个类的子类在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
+加法运算类似add
在这里插入图片描述在这里插入图片描述在这里插入图片描述
运算重载基本用不到,python2.2.开始引入了新的类,新式类
类的定义和实例化的方法
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值