Day13 面向对象编程
文章目录
1. 编程思想
不同程序员在遇到问题解决问题的思维不同
1.面向过程的编程(穷人思想) - 基本语法和逻辑
2.函数式编程(小资思想) - 掌握函数(遇到问题先考虑有没有已存在的函数具备解决问题的能力,没有就创建这个函数)
3.面向对象编程(富豪思想) - 掌握类、对象(变量、函数)
2. 认识类和对象
2.1 什么是类、什么是对象
类就是拥有相同功能和相同属性的对象的集合:抽象的概念;对象就是类的示例,是类型、类别
- 人是类,具体的一个人就是对象
- 电脑是类,具体的一台电脑就是对象(有具体的品牌、CPU、显示屏)
- list是类,[10, 20]就是列表的对象
2.2 定义类(创建类)
用代码描述清楚这个类是拥有那些相同功能和哪些相同属性的对象的集合
- 功能 - 函数
- 属性 - 保存数据的变量
语法:
class 类名:
类的说明文档
类的内容
说明:
1)class - 关键字;固定写法
2)类名 - 程序员自己命名
规范:见名知意,采用驼峰式命名并且首字母大写。(驼峰式:第二个单词的首字母也大写)
3): - 固定写法
4)类的说明文档 - 多行注释
5)类的内容 - 相同功能和相同属性。
有方法(对象方法、类方法、静态方法)和属性(对象属性、类属性)组成
方法 - 定义在类中的函数
属性 - 定义在类中的变量
创建一个人类的类
class Person:
'''
人类
'''
num = 61 # num是属性
def eat(self): # eat是方法
print('吃饭')
def sleep(self):
print('睡')
2.3 创建对象
语法: 类名() - 创建指定类对应的一个对象,并且将对象返回
p1 = Person()
p2 = Person()
print(p1, p2)
3. 类中的方法
定义在类中的函数用,用来描述具备的功能
类中的方法有三种:对象方法、类方法、静态方法
3.1 对象方法
a.怎么定义:将函数直接定义在类中
b.怎么调用:通过对象来调用 - 对象.xxx()
c.特点:自带参数self,通过对象调用对象方法的是参数self不需要传参,系统会自动将当前对象传给self(self,谁调用就指向谁)
d.什么时候用:如果实现函数的功能需要用到对象属性就使用对象方法
3.2 类方法
a.怎么定义:定义函数前加装饰器’@classmethod’
b.怎么调用:通过类来调用 - 类名.xxx()
c.特点:自带参数cls,调用的时候不需要传参,系统自动将当前类传给cls
d.什么时候用:如果实现函数的功能不需要对象属性需要类就用类方法
3.3 静态方法
a.怎么定义:定义函数前加装饰器’@staticmethod’
b.怎么调用:通过类来调用 - 类名.xxx()
c.特点:没有特点
d.什么时候用:实现函数功能既不需要对象属性也不需要类,就用静态方法
class A:
def func1(self):
print(f'self:{
self}')
print('对象方法')
def func11(self, x, y):
print('对象方法2')
@classmethod
def func2(cls):
print('类方法')
@staticmethod
def func3():
print('静态方法')
a = A()
b = A()
print(f'a:{
a}')
# 通过对象调用对象方法
a.func1()
b.func11(200, 200)
a.func11(x=100, y=200)
# 通过类调用对象方法
A.func2()
# 通过静态调用对象方法
A.