类和对象
Python无处不对象,万物皆对象
世界上第一个面向对象对象的编程语言:SmallTalk
C语音:面向过程的语音
C++:面向对象+面向过程的语言
Java:面向对象语言的里程碑
Python:纯面向对象的语言
OOP:面向对象编程
AOP:面向切面编程
1.对象
1.有什么:属性
2.能干什么:方法
对象=属性+方法
对象:一切客观存在的事物 以及可以抽象的事物(以后慢慢理解)
2.对象的属性
1.对象的属性可以又是一个对象(工作中很常用)
2.对象的属性也可以是抽象的、
3.对象的方法
对象之间的方法可以相互调用
4.面向对象的核心思想
模拟现实世界,从而解决现实世界的问题
5.客观世界对象的构成
1.小对象组合构建大对象
2.对象之间彼此方法调用
面向对象的特点
1.各司其职
对象尽量保持简单性
2.弱耦合性
对象和对象之间的关系尽量弱化
3.可重用性
对象可以多次反复使用
4.可扩展性
在原有对象的基础上可以扩展新的方向或属性
1.类
1.类是对象共性的抽象
类拥有的属性和方法,对象就有对应的属性和方法
对象是具象的,类是抽象的
2.类是对象的模板
3.类是客观对象在人脑中的主观反应
2.如何编写一个类
关键字:class
语法:
class 类名:
属性
变量名=变量
方法
def 方法名(参数):
内容
3.创建对象
对象名=类名(构造参数)
s1 = Student() 存的是首地址
4.属性
1.属性的分类:
1.类属性
定义在类中,方法之外的属性
2.实例属性
通过对象创建的属性
2.类属性
1.定义在类中,方法之外的属性
2.通过类属性创建的属性:类名.属性名=值
3.类属性的变化,会影响所有对象
类属性是所有对象共享的
4.不需要创建对象,即可使用
3.实例属性
1.通过对象创建的属性:对象.属性名=值
2.实例属性只会影响自己,不能影响别的对象
实例属性是各个对象各自拥有的
3.不论创建实例属性或修改一个属性,只要和类属性同名,都会创建一个实例属性,遮蔽掉类属性
4.实例对象必须创建对象,才能使用
4. 方法
1. 方法的声明+方法的实现
声明:def 方法名(self,参数):
实现
2. self
1. self:指代对象
2. self在方法中不需要主动传值,自动将当前对象传递给self
3. 在方法中,self相当于外面的对象
4. self之后可以添加参数,用于方法的传参
5. self是开发中习惯的写法,方法调用时,编译器会将当前的对象传递给第一个参数
3. 方法:
也称之为:绑定方法:和实例对象绑定
属性+方法 统称为:成员
成员属性,成员方法
5.构造方法
1. __init__(self):
也称之为:初始化方法
不需要手动调用,在创建对象是,会自动调用
init方法也可以有其他参数---构造参数
2. 构造方法:
返回值只能是None
3. 常用的形式
类属性:是公有,所有的对象都不会改变的属性。一般使用类属性
def __init__(self,a,b,c)
self.a=a
self.b=b
self.c=c
一个类属性也可以另外一个对象,该形式称之为组合
1. 成员前不加任何符号:公开的,公有的
__init__(self):魔法方法也是公开的
2. 成员前加两条下划线:私有化
__age
私有化的属性,不能被外部直接访问,类内部可以访问
3. 私有化:
1. 属性前添加两条下划线
2. 提供对应的get/set方法
4. 私有化本质:
Python其实并没有私有化,使用名字重构的方法实现的伪私有化
私有成员被构建为:_类名__属性名