news 2026/7/31 20:19:56

Python的面向对象

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python的面向对象

一、面向对象基本语法

摘要:本文系统介绍了 Python 面向对象编程的基本语法,涵盖类与对象的概念、属性(实例属性与类属性)、方法(实例方法、类方法与静态方法)、访问控制(封装)以及常用的特殊方法(如__init____str__等)。通过丰富的代码示例,帮助读者快速掌握面向对象的核心要素,为后续深入学习打下坚实基础。

1.1 什么是面向对象

面向对象是一种编程思想,把现实世界的事物抽象成对象,对象有属性(特征)和方法(行为)。

概念解释现实例子
类(Class)对象的蓝图/模板汽车设计图
对象(Object)根据类创建的实例具体的某辆汽车
属性(Attribute)对象的特征颜色、品牌、价格
方法(Method)对象的行为启动、刹车、加速
1.2 类的基本语法
  • 定义一个类
classDog:"""这是一个狗类"""pass# 占位符,暂时什么都不做# 对象实例化car1=Car()car2=Car()print(f"car1 ={car1};\n car2 ={car2};\n type(car1) ={type(car1)};\n type(car2) ={type(car2)}")# 输出结果:# car1 = <__main__.Car object at 0x000001DBE3B363C0>;# car2 = <__main__.Car object at 0x000001DBE3BC1310>;# type(car1) = <class '__main__.Car'>;# type(car2) = <class '__main__.Car'>
1.3 属性
  • 实例属性(属于具体对象的)
classCar:passcar=Car()car.name='奔驰'car.color='black'print(f"car.name ={car.name}, car.color ={car.color}")# 输出结果:car.name = 奔驰, car.color = black
  • 使用__init()__初始化属性(推荐)
classCar:def__init__(self,name,color,money):self.name=name self.color=color self.money=money car=Car('奔驰','黑色','20万')# self 自动指向carprint(f"car.name ={car.name}, car.color ={car.color}, car.money ={car.money}")# 输出结果: car.name = 奔驰, car.color = 黑色, car.money = 20万

self的含义:

  • self代表的是当前实例对象本身
  • 调用时不用手动传参,Python自动传递
1.4 方法
  • 实例方法(最常用)
classCar:def__init__(self,name,color,money):self.name=name self.color=color self.money=moneydefspeed(self):''' 实例方法: 汽车加速 :return: '''print("汽车加速")defget_info(self):returnf"名称:{self.name}, 颜色:{self.color}, 价格:{self.money}"car=Car('奔驰','黑色','20万')car.speed()# 输出结果:汽车加速car_info=car.get_info()print(f"当前汽车的详细信息为:{car_info}")# 输出结果:当前汽车的详细信息为:名称:奔驰, 颜色:黑色, 价格:20万
  • 带参数的方法
classCar:def__init__(self,name,color,money):self.name=name self.color=color self.money=moneydefrun(self,distance):''' 实例方法: 汽车跑了多少米 :return: 一个结果字符串 '''returnf"汽车跑了了{distance}米"car=Car('奔驰','黑色','20万')# 关键字传参car_distance=car.run(distance=100)print(car_distance)# 汽车跑了了100米
1.5 类属性和类方法
  • 类属性(所有对象共享)
classCar:# 类属性type_name="汽车"def__init__(self,brand,model):# 实例属性self.brand=brand self.model=model# 通过类访问类属性print(Car.type_name)# 输出结果:汽车# 通过实例也可以读取类属性my_car=Car("吉利","星越")print(my_car.type_name)# 输出结果:汽车# 修改类属性,所有的对象都改变my_car.type_name="小汽车"print(my_car.type_name)# 输出结果:小汽车
  • 类方法(使用 @classmethod)
classCar:type_name="汽车"total_cars=0def__init__(self,name,color,money):self.name=name self.color=color self.money=money Car.total_cars+=1@classmethoddefget_total(cls):"""类方法:获取创建的车的总数"""returnf"总共有{cls.total_cars}辆车"@classmethoddefchange_type_name(cls,new_type_name):"""类方法:修改类属性"""cls.type_name=new_type_name car1=Car("宝马","黑色","21万")car2=Car("宝马","白色","25万")print(Car.get_total())# 总共有2辆车Car.change_type_name("越野车")print(Car.type_name)# 越野车
  • 静态方法(使用@staticmethod
classMathUtils:@staticmethoddefadd(a,b):"""静态方法:不需要 self 或者 cls"""returna+bprint(MathUtils.add(1,2))# 3
1.6 访问控制(封装)

Python通过命名约定来控制访问权限

classPerson:def__init__(self,name,age):self.name=name# 公共属性(可以直接访问)self._age=age# 受保护的(建议不要直接访问)self.__money=10# 私有属性(名称修饰,不能直接访问)defget_money(self):"""通过方法来访问私有属性"""returnself.__moneydefset_money(self,money):"""通过方法修改私有属性(可以添加验证)"""if(money>0):self.__money=moneyelse:self.__money=0p=Person("张三",25)print(p.name)# 可以直接访问print(p._age)# 可以直接访问,但是不建议# print(p.__money) # 出现报错 AttributeErrorprint(p.get_money())# 10 通过方法进行访问p.set_money(100)# 修改私有方法print(p.get_money())# 100

总结:

命名方式访问级别示例
name公共(可访问)self.name
_name受保护的(约定,不建议访问)self._age
__name私有(不能直接访问)self.__money
1.7 常用的特殊方法
classDog:def__init__(self,name,age):self.name=name self.age=agedef__str__(self):"""字符串表示(print时调用)"""returnf"狗:{self.name},{self.age}岁"def__repr__(self):"""交互式环境显示"""returnf"Dog('{self.name}',{self.age})"def__len__(self):"""返回长度(len()时调用)"""returnself.agedef__add__(self,other):"""加法运算(+)"""returnDog(self.name+other.name,self.age+other.age)dog=Dog("旺财",3)print(dog)# 狗: 旺财, 3岁(调用 __str__)print(len(dog))# 3(调用 __len__)dog2=Dog("小黑",2)dog3=dog+dog2# 调用 __add__print(dog3.name)# 旺财小黑
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/31 20:17:57

未来已来:CPA-Manager-Plus路线图与社区贡献指南

未来已来&#xff1a;CPA-Manager-Plus路线图与社区贡献指南 【免费下载链接】CPA-Manager-Plus A self-hosted CPA / CLIProxyAPI management panel and AI gateway observability dashboard for requests, usage, cost, quota, failures, and account health. 项目地址: ht…

作者头像 李华
网站建设 2026/7/31 20:14:02

持续完善(学习中)——光伏逆变

一、光伏逆变器到底做什么&#xff1f;简单说&#xff1a;把光伏组件的直流电&#xff0c;变成符合电网要求的交流电&#xff0c;同时从组件榨取出最大功率。光伏逆变器可以将光伏太阳能板产生的可变直流电压转换为市电频率交流电的逆变器&#xff0c;可以反馈回商用输电系统&a…

作者头像 李华
网站建设 2026/7/31 20:10:17

工控PCB隔离开槽与隔离坝专属制造工艺剖析

一、工业现场强电磁环境下普通 PCB 布局工艺的短板工厂变频器、接触器、大功率电机启停时会产生剧烈的脉冲干扰、电磁场辐射&#xff0c;工业 PCB 同时承载高压功率回路、微弱采样信号、总线通讯线路&#xff0c;强弱电耦合极易造成采集数据漂移、PLC 通讯掉线、保护回路误触发…

作者头像 李华
网站建设 2026/7/31 20:08:11

C-RADIOv4-1D-H部署指南:NVIDIA GPU加速与分辨率适配最佳实践

C-RADIOv4-1D-H部署指南&#xff1a;NVIDIA GPU加速与分辨率适配最佳实践 【免费下载链接】C-RADIOv4-1D-H 项目地址: https://ai.gitcode.com/hf_mirrors/nvidia/C-RADIOv4-1D-H C-RADIOv4-1D-H是一款基于深度学习的无线电信号处理模型&#xff0c;专为NVIDIA GPU优化…

作者头像 李华
网站建设 2026/7/31 20:06:27

指挥中心控制台厂家选购隐藏秘密,你究竟知道多少?

随着智慧城市、应急管理、轨道交通、能源调度等数字化项目持续落地&#xff0c;指挥中心、大型控制室定制控制台成为调度系统不可或缺的硬件载体。很多项目工程师在选型阶段仅关注外观和报价&#xff0c;忽视生产资质、交付体系、大型项目落地能力等核心要素&#xff0c;极易出…

作者头像 李华
网站建设 2026/7/31 20:04:29

华硕笔记本性能优化指南:5个场景下的GHelper高效配置方案

华硕笔记本性能优化指南&#xff1a;5个场景下的GHelper高效配置方案 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenbook,…

作者头像 李华