类Class是 Python 面向对象编程OOP的核心类 属性 方法。用最通俗的话说类是 设计图纸对象是 按图纸造出来的具体产品。一、先搞懂最核心的关系类图纸抽象的模板定义了一类事物共有的特征和能做的事对象汽车根据图纸造出来的具体实例每个对象都有自己的独特属性例子类人类 → 对象你、我、张三类手机 → 对象你的 iPhone、我的华为类汽车 → 对象红色的特斯拉、黑色的奔驰二、最简单的类定义一辆 基础汽车# 定义类画图纸类名首字母大写行业规范 class Car: # 1. 属性描述事物的特征变量 brand 未知品牌 # 品牌 color 白色 # 颜色 speed 0 # 当前速度 # 2. 方法描述事物能做的事函数 def run(self): self.speed 20 print(f汽车启动当前速度{self.speed}km/h) def stop(self): self.speed 0 print(汽车停下了) # 实例化造车根据图纸造一辆具体的车 my_car Car() # 使用对象调用属性和方法 print(my_car.color) # 输出白色 my_car.run() # 输出汽车启动当前速度20km/h my_car.stop() # 输出汽车停下了关键知识点self是什么self是当前对象自己的代名词就像 我。类里的所有方法第一个参数必须是self名字可以改但行业默认用 self调用方法时不需要手动传selfPython 会自动把当前对象传进去用self.属性名可以访问当前对象的属性三、构造函数造车时就定制属性上面的车出厂都是白色、未知品牌很不灵活。用 ** 构造函数__init__** 可以在造车时就指定属性class Car: # 构造函数创建对象时自动执行专门用来初始化属性 def __init__(self, brand, color, max_speed180): # 实例属性每个对象自己独有的属性 self.brand brand # 传入的品牌赋值给当前对象的brand self.color color # 传入的颜色赋值给当前对象的color self.max_speed max_speed # 最高速度有默认值 self.speed 0 # 初始速度都是0 def run(self): if self.speed self.max_speed: self.speed 30 print(f{self.color}的{self.brand}加速到{self.speed}km/h) else: print(f已经到最高速度{self.max_speed}km/h不能再快了) # 造三辆不同的车 tesla Car(特斯拉, 红色) benz Car(奔驰, 黑色, 220) bmw Car(宝马, 蓝色) # 每辆车的属性都是独立的 print(tesla.color) # 红色 print(benz.max_speed) # 220 tesla.run() # 红色的特斯拉加速到30km/h benz.run() # 黑色的奔驰加速到30km/h四、实例属性 vs 类属性1. 实例属性刚才讲的属于单个对象每个对象的值可以不同定义在__init__里用self.访问例子每辆车的颜色、品牌2. 类属性属于整个类所有对象共享同一个值定义在类内部、方法外部例子所有汽车都有 4 个轮子class Car: # 类属性所有汽车共享 wheels 4 def __init__(self, brand, color): self.brand brand self.color color # 类属性可以通过类名或对象访问 print(Car.wheels) # 4 print(Car(特斯拉, 红色).wheels) # 4 # 修改类属性所有对象都会受影响 Car.wheels 6 print(Car(奔驰, 黑色).wheels) # 6五、继承儿子 继承 爸爸 的本事继承就是子类复用父类的所有属性和方法还能添加自己独有的功能。就像父类汽车 → 子类SUV、跑车、卡车父类人类 → 子类学生、老师、医生# 父类基类汽车 class Car: def __init__(self, brand, color): self.brand brand self.color color self.speed 0 def run(self): self.speed 30 print(f{self.color}的{self.brand}在公路上行驶速度{self.speed}km/h) # 子类派生类SUV继承自Car class SUV(Car): # 子类独有的属性和方法 def __init__(self, brand, color, seat_count7): # 先调用父类的构造函数继承父类的属性 super().__init__(brand, color) # 子类自己的属性 self.seat_count seat_count # 子类独有的方法 def off_road(self): print(f{self.color}的{self.brand}开启越野模式) # 重写父类的方法多态 def run(self): self.speed 20 print(f{self.color}的{self.brand}在山路行驶速度{self.speed}km/h) # 使用子类 my_suv SUV(路虎, 白色) my_suv.run() # 调用重写后的方法白色的路虎在山路行驶速度20km/h my_suv.off_road() # 调用子类独有的方法白色的路虎开启越野模式 print(my_suv.seat_count) # 7六、封装把 内部细节 藏起来封装就是只暴露必要的接口隐藏内部实现。就像你开车只需要踩油门、刹车不需要知道发动机怎么工作。Python 中用 ** 单下划线_和双下划线__** 表示私有_属性名约定俗成的私有告诉别人 别随便改但实际上还能改__属性名真正的私有外部不能直接访问class Car: def __init__(self, brand, color): self.brand brand self.color color self.__engine_temp 90 # 发动机温度私有属性外部不能直接改 # 提供公开的方法来访问和修改私有属性 def get_engine_temp(self): return self.__engine_temp def set_engine_temp(self, temp): if 80 temp 100: self.__engine_temp temp print(发动机温度已调整) else: print(温度异常不能调整) my_car Car(丰田, 银色) # print(my_car.__engine_temp) # 报错不能直接访问私有属性 print(my_car.get_engine_temp()) # 90 my_car.set_engine_temp(95) # 发动机温度已调整 my_car.set_engine_temp(150) # 温度异常不能调整七、一句话总结核心类是模板对象是实例属性是特征方法是行为self是自己__init__是初始化继承是复用封装是隐藏多态是重写面向对象编程的本质就是把现实世界的事物抽象成 属性 方法 的类然后用对象来模拟现实世界的交互。
Python 类
类Class是 Python 面向对象编程OOP的核心类 属性 方法。用最通俗的话说类是 设计图纸对象是 按图纸造出来的具体产品。一、先搞懂最核心的关系类图纸抽象的模板定义了一类事物共有的特征和能做的事对象汽车根据图纸造出来的具体实例每个对象都有自己的独特属性例子类人类 → 对象你、我、张三类手机 → 对象你的 iPhone、我的华为类汽车 → 对象红色的特斯拉、黑色的奔驰二、最简单的类定义一辆 基础汽车# 定义类画图纸类名首字母大写行业规范 class Car: # 1. 属性描述事物的特征变量 brand 未知品牌 # 品牌 color 白色 # 颜色 speed 0 # 当前速度 # 2. 方法描述事物能做的事函数 def run(self): self.speed 20 print(f汽车启动当前速度{self.speed}km/h) def stop(self): self.speed 0 print(汽车停下了) # 实例化造车根据图纸造一辆具体的车 my_car Car() # 使用对象调用属性和方法 print(my_car.color) # 输出白色 my_car.run() # 输出汽车启动当前速度20km/h my_car.stop() # 输出汽车停下了关键知识点self是什么self是当前对象自己的代名词就像 我。类里的所有方法第一个参数必须是self名字可以改但行业默认用 self调用方法时不需要手动传selfPython 会自动把当前对象传进去用self.属性名可以访问当前对象的属性三、构造函数造车时就定制属性上面的车出厂都是白色、未知品牌很不灵活。用 ** 构造函数__init__** 可以在造车时就指定属性class Car: # 构造函数创建对象时自动执行专门用来初始化属性 def __init__(self, brand, color, max_speed180): # 实例属性每个对象自己独有的属性 self.brand brand # 传入的品牌赋值给当前对象的brand self.color color # 传入的颜色赋值给当前对象的color self.max_speed max_speed # 最高速度有默认值 self.speed 0 # 初始速度都是0 def run(self): if self.speed self.max_speed: self.speed 30 print(f{self.color}的{self.brand}加速到{self.speed}km/h) else: print(f已经到最高速度{self.max_speed}km/h不能再快了) # 造三辆不同的车 tesla Car(特斯拉, 红色) benz Car(奔驰, 黑色, 220) bmw Car(宝马, 蓝色) # 每辆车的属性都是独立的 print(tesla.color) # 红色 print(benz.max_speed) # 220 tesla.run() # 红色的特斯拉加速到30km/h benz.run() # 黑色的奔驰加速到30km/h四、实例属性 vs 类属性1. 实例属性刚才讲的属于单个对象每个对象的值可以不同定义在__init__里用self.访问例子每辆车的颜色、品牌2. 类属性属于整个类所有对象共享同一个值定义在类内部、方法外部例子所有汽车都有 4 个轮子class Car: # 类属性所有汽车共享 wheels 4 def __init__(self, brand, color): self.brand brand self.color color # 类属性可以通过类名或对象访问 print(Car.wheels) # 4 print(Car(特斯拉, 红色).wheels) # 4 # 修改类属性所有对象都会受影响 Car.wheels 6 print(Car(奔驰, 黑色).wheels) # 6五、继承儿子 继承 爸爸 的本事继承就是子类复用父类的所有属性和方法还能添加自己独有的功能。就像父类汽车 → 子类SUV、跑车、卡车父类人类 → 子类学生、老师、医生# 父类基类汽车 class Car: def __init__(self, brand, color): self.brand brand self.color color self.speed 0 def run(self): self.speed 30 print(f{self.color}的{self.brand}在公路上行驶速度{self.speed}km/h) # 子类派生类SUV继承自Car class SUV(Car): # 子类独有的属性和方法 def __init__(self, brand, color, seat_count7): # 先调用父类的构造函数继承父类的属性 super().__init__(brand, color) # 子类自己的属性 self.seat_count seat_count # 子类独有的方法 def off_road(self): print(f{self.color}的{self.brand}开启越野模式) # 重写父类的方法多态 def run(self): self.speed 20 print(f{self.color}的{self.brand}在山路行驶速度{self.speed}km/h) # 使用子类 my_suv SUV(路虎, 白色) my_suv.run() # 调用重写后的方法白色的路虎在山路行驶速度20km/h my_suv.off_road() # 调用子类独有的方法白色的路虎开启越野模式 print(my_suv.seat_count) # 7六、封装把 内部细节 藏起来封装就是只暴露必要的接口隐藏内部实现。就像你开车只需要踩油门、刹车不需要知道发动机怎么工作。Python 中用 ** 单下划线_和双下划线__** 表示私有_属性名约定俗成的私有告诉别人 别随便改但实际上还能改__属性名真正的私有外部不能直接访问class Car: def __init__(self, brand, color): self.brand brand self.color color self.__engine_temp 90 # 发动机温度私有属性外部不能直接改 # 提供公开的方法来访问和修改私有属性 def get_engine_temp(self): return self.__engine_temp def set_engine_temp(self, temp): if 80 temp 100: self.__engine_temp temp print(发动机温度已调整) else: print(温度异常不能调整) my_car Car(丰田, 银色) # print(my_car.__engine_temp) # 报错不能直接访问私有属性 print(my_car.get_engine_temp()) # 90 my_car.set_engine_temp(95) # 发动机温度已调整 my_car.set_engine_temp(150) # 温度异常不能调整七、一句话总结核心类是模板对象是实例属性是特征方法是行为self是自己__init__是初始化继承是复用封装是隐藏多态是重写面向对象编程的本质就是把现实世界的事物抽象成 属性 方法 的类然后用对象来模拟现实世界的交互。