面向对象
面向对象:编程思维
python一切皆对象
17.1 面向对象思想
编程思维2种
-
面向过程
代表语言:C语言 优点:对于小型程序开发效率非常高 缺点:不适应当前的主流大型项目
当需要解决一个问题的时候,更关注开发的每一个步骤的细节完成(过程)
雷军造车:从头到尾造车,需要自己设计制作每个零件,从发动机到轮胎,所有步骤都自己亲自完成
实现:依赖函数实现
-
面向对象
代表语言:Java、c++、python
当你需要解决一个问题的时候,不太考虑中间思想,更关注是谁能够帮你完成这个事情
雷军造车:只需要有一个设计图,思考的只是把这些零件组装起来,而不是每个零件你都自己去思考
实现:封装/继承/多态(三大特性)
- 总结
- 面向对象和面向过程就是2种编程思维,编程思维其实就是解决问题的2种套路
17.2 类和对象
17.2.1 对象(object)
对象:是一个客观具体的事物
Python一切皆是对象 : 对象本质上是一个 ‘容器’ 用来存储数据(变量,函数)
17.2.2 类
类的作用
- 归类,把对象的共同属性抽象出来作为一个蓝图
- 解决不同对象 存储相同数据的问题
类的目的:节省空间+分类
创建类的语法
class 类名:
属性(数据)
方法(功能)
17.2.3 类和对象创建和使用
使用面向对象去编程实现,需要通过2个步骤
- 定义类
- 根据类去实例化(创建)一个对象,通过这个对象去调用执行操作
类的组成
- 类由2个部分组成
- 属性(数据)
- 共同特征:用于描述类的具体数据
- 比如狗的名字、品种。
- 方法(功能)
- 共同行为:用于定义类能做什么事情
- 比如狗坐下、狗叫、捡东西
- 属性(数据)
class 类名:
属性
# 方法
def 方法名(self,...):
....
# 类的创建
class Dog:
def __init__(self):
print("创建了新的狗")
def call(self):
print("汪汪汪...")
def sit(self):
print('坐下了....')
def fetch(self,item):
print(f'捡回了 {item}')
# 类() 基于这个类 ,创建一个对象 (创建该类的实例)
d1 = Dog() # 创建对象 d1
d1.sit()
17.2.4 __init__构造方法 (魔法方法)
魔法方法:基本不需要手动去执行,都是在程序中自动被触发
init方法什么时候执行?当实例化类创建对象的时候,他就会被自动执行
对象 = 类() # 创建一个对象的时候,自动执行Init方法
17.2.5 self与对象属性
self: 自己
python中的self: 表示 示例对象自己,对象在调用方法的时候,方法中的self代表当前调用这个方法的对象
对象属性:定义到init方法中
语法规则
def __init__(self):
self.属性名1 = 值
self.属性名2 = 值
后续别的方法想用对象的独特属性只需要直接
def get_info(self):
print(self.属性名1)
print(self.属性名2)
# 类的创建
class Dog:
def __init__(self,name,age):
# self 是用来区分对象的,什么对象调用方法,self就是哪个对象
self.name = name
self.age = age
# 查看所有对象的属性
def get_info(self):
print(f""" 对象属性
self.name : {self.name}
self.age : {self.age}
""")
def call(self):
print("汪汪汪...")
print("self:",self)
小黑 = Dog('小黑',5)