小菜鸟学习Python——Day2之Python面向对象

张开发
2026/4/18 21:38:30 15 分钟阅读

分享文章

小菜鸟学习Python——Day2之Python面向对象
作为 Python 初学者面向对象编程OOP是代码必不可少的基石而类属性、三大特性封装、继承、多态再搭配闭包与装饰器两个高阶语法糖能让你的代码从“能用”升级为”高效”。接下来我们就来一起学习一下吧一.类属性与实例属性在 Python 类中属性分两种这是理解面向对象的第一步实例属性每个对象独有的数据通过self定义互不干扰类属性属于类本身所有实例共享一份数据直接通过类名访问class Student: # 类属性所有学生共享 school Python 大学 def __init__(self, name): # 实例属性每个学生独有 self.name name # 测试 s1 Student(小明) s2 Student(小红) # 类属性所有实例共享 print(Student.school) # 输出Python 大学 print(s1.school, s2.school) # 输出Python 大学 Python 大学 # 实例属性互不干扰 print(s1.name, s2.name) # 输出小明 小红 # 修改类属性所有实例同步生效 Student.school Python 学院 print(s1.school) # 输出Python 学院总结类属性公共数据全局共享修改一处全部生效实例属性个体数据独立存储互不影响二.面向对象三大特性1封装封装是面向对象的“锁”核心思想把属性和方法打包到一个类中将数据私密化防止数据泄露禁止外部直接修改内部数据Python中用双下划线__定义私有属性/方法外部无法直接访问。class User: def __init__(self, name, password): self.name name # 公有属性 self.__password password # 私有属性外部无法直接访问 # 公开方法提供安全的访问/修改接口 def check_password(self, pwd): return self.__password pwd def set_password(self, old_pwd, new_pwd): # 封装校验逻辑必须验证旧密码才能修改 if self.check_password(old_pwd): self.__password new_pwd print(密码修改成功) else: print(旧密码错误) # 测试 user User(张三, 123456) print(user.name) # 公有属性可访问 # print(user.__password) # 报错私有属性外部禁止访问 user.set_password(123456, 654321) # 合法修改 print(user.check_password(654321)) # 输出True封装的价值保护数据不被随意篡改隐藏内部实现对外只提供简单接口代码更安全、更易维护2继承继承是面向对象的「复制粘贴 升级」核心子类自动拥有父类的所有属性和方法子类可以重写父类方法实现个性化功能极大减少重复代码实现代码复用Python 支持单继承和多继承语法极简。# 父类基础功能 class Animal: def __init__(self, name): self.name name def speak(self): print(动物在叫) # 子类继承父类扩展功能 class Dog(Animal): # 重写父类方法 def speak(self): print(f{self.name}汪汪汪) class Cat(Animal): def speak(self): print(f{self.name}喵喵喵) # 测试 dog Dog(旺财) cat Cat(咪咪) dog.speak() # 输出旺财汪汪汪 cat.speak() # 输出咪咪喵喵喵继承的核心父类一键继承所有功能子类方法重写子类可以覆盖父类方法实现定制化遵循「开闭原则」对扩展开放对修改关闭3多态多态是继承的进阶核心一句话不同子类对象调用同一个方法呈现不同的行为多态的前提继承 方法重写。# 统一接口接收任意动物对象调用 speak 方法 def make_speak(animal): animal.speak() # 测试传入不同对象执行不同逻辑 dog Dog(旺财) cat Cat(咪咪) make_speak(dog) # 输出旺财汪汪汪 make_speak(cat) # 输出咪咪喵喵喵多态的价值代码更灵活无需为每个子类写单独逻辑扩展性极强新增子类无需修改原有代码三.闭包Python 高阶函数的灵魂闭包是装饰器的基础不是面向对象但和 OOP 相辅相成核心定义函数嵌套定义内部函数引用了外部函数的变量外部函数返回内部函数闭包的作用保留外部函数的局部变量实现数据持久化。def math(): a 10 #使用闭包 def inner(): print(a) return inner inner math() inner()闭包核心延长局部变量的生命周期实现数据隐藏比全局变量更安全是装饰器的底层原理四.装饰器给函数加功能装饰器是闭包的经典应用核心作用不修改原函数代码不修改调用方式动态给函数添加功能# 装饰器记录函数执行时间 import time def timer(func): def wrapper(): start time.time() func() # 执行原函数 end time.time() print(f执行耗时{end - start:.2f}秒) return wrapper # 使用装饰器一行代码加功能 timer def test(): time.sleep(1) print(函数执行完毕) # 调用和原来完全一样却自动拥有计时功能 test()装饰器的价值代码解耦业务逻辑与通用功能分离不改动原函数复用性强一个装饰器给所有函数使用五.总结知识串联,从基础到高阶类与属性面向对象的基础封装数据与行为封装保护数据隐藏实现暴露接口继承复用代码扩展功能多态灵活调用提高扩展性闭包高阶函数基础保留变量状态装饰器闭包的应用无侵入增强功能一句话总结用类和封装定义数据安全的对象用继承复用代码用多态提升灵活度用闭包和装饰器优化代码结构 —— 这就是 Python 优雅编程的核心。学习Python类属性、封装、继承、多态及闭包、装饰器的过程是我从懵懂到通透的进阶之旅。起初我混淆类属性与实例属性忽视封装的重要性也难以理解闭包与装饰器的逻辑。通过实操踩坑我逐渐吃透核心封装保障数据安全继承实现代码复用多态提升灵活性闭包与装饰器则优化代码结构、实现功能复用。下期预告FastAPI基础入门作者不爱编程的同学127 日期2026.4.12

更多文章