面向对象 (一)
1. 类和对象的定义使用
-
类的概述:在py中我们使用==class==来设计一个类,而类就类似于设定一个模板或者表格,以便后面可以批量使用同一个模板。而==类可以封装属性==。
-
类的属性:即定义在类中的变量,也叫==成员表变量==。(数据)
-
类的行为:即定义在类中的函数,也叫==成员方法==。(函数)
创建类的基本格式:
1 | class 类的名称:(class就是类的标志) |
对象可以理解为具体一个物体,当我们使用类构建出对象时,相当于去让一个变量去使用模板。进行编程
创建类对象的基本方式:
1 | 对象=类() |
即调用类的模板准备使用
类方法定义:
1 | def 方法名(self,形参1,形参2,...): |
==注意:在上述类方法定义中,与函数最明显的区别在于,他有一个self,这个self必须填写==
self:
- 用来表示类对象自身的意思
- 要使用类对象调用时,self会自动被py传入
- 在方法内部,想要访问成员变量,必须使用self
- 在传参时,self可以被忽略,不用理会
示例:
1 | #创建类 |
2. 构造方式和魔术方式(统称为内置方法)
2.1 init方法
init方法可以在对象创建时自动执行,并且将传入的参数传递给init使用
基本语法:
1 | class 类名: |
在上述语法中。我们在构建对象时直接将需要写入的数据写在括号中,此时就可以将值自动放进类的属性中,便于进行操作
==注意:在使用init方法中,我们可以省略属性部分,因为在init方法中,也可以相当于创建了属性中的变量,所以,一但init中引用到的属性,都可以不用在属性中单独定义。==
示例:
1 | class Student: |
上述示例中,我们使用类的行为直接打印出类的属性,免去了不必要的冗杂的代码。使代码更加简洁。
==注意:在类的构建方法中前后的两个下划线不可省略。并且在构建中也需要参数self==
2.2魔术方法(lt le eq str)
当我们需要对对象中的数据进行大小比较时无法直接通过对象进行比较,而魔术方法可以实现这种功能。并且也可以直接通过对象调用输出想要参数。魔术方法有很多,并不仅仅局限于以下介绍的四种。
2.2.1 比较的魔术方法
首先 lt le eq 三种方法是用来比较大小使用的,区别在于:
- lt仅仅用于大于和小于比较
- le仅仅用于小于等于和大于等于比较
- eq仅仅用于等于比较
==注意:三者是互相独立的,不能混淆,即使用的lt方法中是无法使用等于比较和大于等于以及小于等于。其他的方法同理,一个方法只能负责其支持的单独的功能。返回值为布尔类型==
示例:
1 | class Car: |
运行结果如下:
比较成功,如果想用>=则需要le,==需要eq
其次探讨str
str是string缩写,目的是让对象可以直接以字符串形式输出
示例(未使用str):
1 | class Car: |
结果:
其中我们打印内容需要去追溯其中的具体属性。==如果没有str那么返回的是对象的内存地址==。
使用str示例:
1 | class Car: |
运行结果为:
资料参考
b站的黑马程序员





