大家好,我是python网络爬虫这门课程的主要讲师geo
如果你只用函数:
- 数据散落在各处
- 修改一个逻辑要改一堆地方
- 项目一大就会失控
而 OOP:
- 把数据 + 行为「封装」在一起
- 可读性高
- 可维护性强
- 可扩展
面向对象编程 oop
class Dog:
def __init__(self, name):
self.name = name
def bark(self):
print(f"{self.name} 汪汪叫")
dog = Dog("旺财")
dog.bark()
class Dog:
- 定义一个类,名字叫 Dog
init
- 构造函数(初始化方法)
- 当你 Dog() 的时候自动执行
self
- 代表“当前这个对象本身”
- 不是关键字,只是约定
类 class
类 = 模板 / 蓝图 / 说明书
有哪些属性(attributes)
self.name = name
属性 = 对象的状态 / 数据
例如:
- 狗的名字
- 年龄
- 颜色
有哪些行为(methods)
def bark(self):
print("汪汪")
方法 = 对象能做的事情
所以 :
对象 object
dog 是一个对象(实例)
Dog 是类
面向对象编程继承(Inheritance) 调用子类
在原有基础上继续扩建
# 子类
class PoliceDog(Dog):
def __init__(self, name, duty):
# 调用父类的 __init__,把 name 这个属性初始化好
super().__init__(name)
self.duty = duty
def attack(self):
print(f"{self.name} 正在执行 {self.duty} ,咬!!")
# 如果我们想要“扩展”父类的方法,也可以先调用 super,然后再加自己的逻辑:
def bark(self):
super().bark() # 先执行原来的 bark
print("同时发出低沉的警告声...") # 再扩展新的行为
pd = PoliceDog("黑豹", "巡逻")
pd.bark() # 黑豹 汪汪叫 + 同时发出低沉的警告声...
pd.attack() # 黑豹 正在执行 巡逻 ,咬!!