文章目录
对象(object)
什么是对象
- 对象是内存中用于存储数据的一块区域,对象中可以存储各种数据
- 对象由三部分构成,id、type、value
- python学习笔记三 之 对象基础知识
面向对象
- python是一门面向对象的编程语言
- 面向对象就是语言中所有操作都是通过对象进行的;
- 面向过程的编程语言:面向过程就是将程序的逻辑分解为一个一个的步骤,通过对每个步骤的抽象来完成程序;
- 面向过程编写的代码往往只适用于一个功能,要实现别的功能,需要从新编写,复用性较低,也不方便维护;
- 面向对象的编程语言,关注的是对象不关注过程;需要执行的功能保存在对应的对象中;
类(class)
- 目前学习的都是python内置对象;内置对象并不能完全满足需求,因此需要自定义对象;
- 我们需要根据类来创建对象;对象是类的示例,如int(),bool()等都是类;
- 如果多个对象是通过一个类创建的,则称这些对象就是以类对象;
定义简单类
语法
class 类名([父类]):
代码块
注: 中括号[]里内容可以省略;
创建对象
- 类似调用函数调用类名创建对象;
obj1就是一个通过my_class创建的对象
isinstance()
- isinstance()用于检查一个对象是否是一个类的实例;
a是int类中的对象,不是my_class类的对象,所以返回false;
obj1是my_class中对象,所以返回true;
对象创建流程(简单)
- 创建一个变量
- 在内存中创建一个新对象
- 将对象的id赋值给变量
- 可以向对象中添加变量,对象中的变量叫做属性
- 语法 对象.属性名=值
- 语法 对象.属性名=值
定义类
- 类和对象都有两部分组成
- 数据(属性),如一个人有身高、体重、姓名等数据;
- 行为(方法),如一个有跑、走、跳等行为;
定义语法
class 类名([父类]):
代码块
- 在类的代码块中,可以定义变量和函数
- 变量会成为所有对象的公共属性,所有对象都可以通过对象名.属性名来访问这些变量;
- 函数称为方法会成为所有对象的公共方法,所有对象都可以通过 对象名. 方法名()来访问这些方法;
- 注意 方法调用时会默认传递一个实参,所有方法定义时需至少定义一个形参;否则会报错;
- 变量会成为所有对象的公共属性,所有对象都可以通过对象名.属性名来访问这些变量;
类和对象查找流程
- 当我们调用对象的属性时,解析器会先在当前对象中寻找是否含有该属性,若有,则返回该值,若没有,则去对象所属类中去寻找,若有则返回该值,若没有则报错;
- 如果属性或方法是所有的示例共享的,则应该保存到类对象中,
- 如果属性或方法是某个对象独有的,则保存到某个类对象中,
方法第一个参数
- 方法每次被调用时,解析器都会自动传递第一个实参,该实参就是调用该方法的对象本身,如果是对象1调的,则第一个参数就是对象1;如果是对象2调的,则第一个参数就是对象2;一般将其命名为self;
用self可以访问调用对象的属性;
类的特殊方法init
- 在类中可以定义一些特殊方法(魔术方法),特殊方法以__(两个下划线)开头,__(两个下划线)结尾,特殊方法不需要我们自己调用,它会在特殊时刻自动调用
- init会在对象创建时调用
对象创建流程(完整)
- 创建一个变量
- 在内存中创建一个新对象
- 执行类代码块中的代码,只在类定义的时候执行一次;
- 执行_init(self)_方法,每创建一个对象执行一次;
- 将对象的id赋值给变量
属性和方法
类属性
- 类中定义的变量称为类属性,类属性能通过实例对象和类对象来访问
- 类属性只能通过类对象修改
实例属性
- 通过实例对象添加的属性称为实例属性
- 实例属性只能通过实例对象来访问和修改
实例方法
- 在类中定义,第一个参数是self,也就是调用该函数的对象
- 实例方法可以通过实例和类调用
- 通过实例调用时,会自动将调用对象作为self传入
- 通过类调用时,需要手动传入对象作为self
下面演示的两种方式等价
类方法
- 用装饰器@classmethod来修饰的方法就是类方法
- 类方法的第一个参数是cls,会被自动传递,cls就是当前的类对象
- 类方法可以通过实例和类调用,两者没有区别
静态方法
- 静态方法不需要传递参数,可以通过类和实例调用;
- 静态方法只是一个保存到当前类的函数,是一个工具方法,与类关系不大
类的基本结构
class 类名([父类]):
公共属性
…
def __ init __(self,…)
…
其他方法
…
最后
可以关注一下我的公众号,最近开始写公众号,我会在上面分享一些资源和发布一些csdn上发布不了的干货
点个关注是对博主最大的支持