资讯动态

Python面向对象编程基础技术报告:类、对象、封装、属性与方法

发布时间:2026/10/15 3:59:08 来源:尧图企业网站定制
面向对象编程Object-Oriented Programming, OOP是现代编程语言的核心范式之一它通过“类”和“对象”的概念将现实世界中的事物抽象为程序中的实体从而提高代码的可复用性、可维护性和可扩展性。Python作为一门支持多范式编程的高级语言其面向对象特性简洁而强大既保留了OOP的核心思想又通过动态类型、内置方法等机制降低了使用门槛。本报告将以Python为例系统阐述类与对象、封装、成员属性与成员方法等核心概念并结合代码示例与解析展现Python面向对象的独特亮点。二、类与对象抽象与实例化的基石类Class是对一类事物的抽象描述它定义了该类事物共有的属性数据和方法行为对象Object则是类的具体实例是类在内存中的具体存在。例如“学生”是一个类而“张三”“李四”则是“学生”类的两个对象。在Python中类的定义使用class关键字语法如下class类名:# 类体属性与方法其中类名通常采用大驼峰命名法如Student、Person。类的实例化则通过“类名()”实现例如classStudent:pass# 空类仅用于演示# 实例化对象s1Student()s2Student()print(type(s1))# class __main__.Studentprint(s1s2)# False不同对象上述代码中Student类没有定义任何属性或方法因此s1和s2是空对象但它们各自拥有独立的内存空间互不影响。三、成员属性对象的状态存储成员属性Member Attributes是对象用于存储状态的数据分为实例属性和类属性两类。实例属性属于单个对象每个对象的实例属性独立存在。通常在构造方法__init__中通过self.属性名定义例如classStudent:def__init__(self,name,age):self.namename# 实例属性self.ageage# 实例属性s1Student(张三,20)s2Student(李四,21)print(s1.name)# 张三print(s2.name)# 李四s1.age22# 仅修改s1的age不影响s2print(s2.age)# 21类属性属于类本身所有对象共享同一份数据。定义在类体中、方法之外例如classStudent:schoolXX大学# 类属性def__init__(self,name):self.namename s1Student(张三)s2Student(李四)print(s1.school)# XX大学print(s2.school)# XX大学Student.schoolYY大学# 修改类属性所有对象生效print(s1.school)# YY大学需要注意的是若通过对象修改类属性如s1.school “ZZ大学”实际上是为s1新增了一个实例属性并不会影响类属性本身或其他对象。四、成员方法对象的行为定义成员方法Member Methods是定义在类中的函数用于描述对象的行为。Python中的成员方法分为实例方法、类方法和静态方法三类。实例方法第一个参数必须是self代表当前对象通过对象调用用于操作实例属性。例如classStudent:def__init__(self,name,score):self.namename self.scorescoredefintroduce(self):# 实例方法print(f我叫{self.name}成绩是{self.score})defpass_exam(self):# 实例方法returnself.score60sStudent(张三,85)s.introduce()# 我叫张三成绩是85print(s.pass_exam())# True类方法使用classmethod装饰器第一个参数是cls代表类本身通过类或对象调用常用于工厂模式或操作类属性。例如classStudent:count0# 类属性记录学生总数def__init__(self,name):self.namename Student.count1classmethoddefget_count(cls):# 类方法returncls.count s1Student(张三)s2Student(李四)print(Student.get_count())# 2通过类调用print(s1.get_count())# 2通过对象调用静态方法使用staticmethod装饰器无self或cls参数通过类或对象调用用于定义与类相关但不依赖对象或类状态的辅助函数。例如classMathUtils:staticmethoddefadd(a,b):# 静态方法returnabprint(MathUtils.add(1,2))# 3五、封装隐藏内部实现暴露安全接口封装Encapsulation是OOP的核心特性之一其目的是将对象的内部状态属性隐藏起来仅通过公开的方法接口对外提供服务从而避免外部直接修改导致数据不一致。在Python中封装通过“命名约定”实现而非强制访问控制单下划线前缀_attr约定为“受保护”属性外部不应直接访问但Python不会强制限制双下划线前缀__attr触发名称改写Name Mangling外部无法直接通过__attr访问需通过_类名__attr访问不推荐从而实现“伪私有”。例如classBankAccount:def__init__(self,owner,balance):self.ownerowner self.__balancebalance# 私有属性伪私有defdeposit(self,amount):ifamount0:self.__balanceamountprint(f存入{amount}余额{self.__balance})else:print(存入金额必须大于0)defwithdraw(self,amount):if0amountself.__balance:self.__balance-amountprint(f取出{amount}余额{self.__balance})else:print(余额不足或金额无效)defget_balance(self):# 公开接口用于查询余额returnself.__balance accountBankAccount(张三,1000)account.deposit(500)# 存入500余额1500account.withdraw(200)# 取出200余额1300print(account.get_balance())# 1300# print(account.__balance) # 报错AttributeErrorprint(account._BankAccount__balance)# 1300不推荐直接访问上述代码中__balance是私有属性外部无法直接修改必须通过deposit、withdraw、get_balance等公开方法操作从而保证了余额数据的安全性。六、Python面向对象的独特亮点动态属性与方法Python允许在运行时为对象动态添加属性或方法例如classDog:passdDog()d.name旺财# 动态添加属性defbark(self):print(f{self.name}在叫)d.barkbark.__get__(d)# 动态绑定方法d.bark()# 旺财在叫内置方法魔术方法Python提供了大量以双下划线开头和结尾的内置方法如__str__、eq、add允许自定义对象的行为例如classVector:def__init__(self,x,y):self.xx self.yydef__str__(self):# 自定义字符串表示returnfVector({self.x},{self.y})def__add__(self,other):# 自定义加法returnVector(self.xother.x,self.yother.y)v1Vector(1,2)v2Vector(3,4)print(v1v2)# Vector(4, 6)属性装饰器property可将方法伪装成属性实现“取值”和“设值”的控制例如classCircle:def__init__(self,radius):self.radiusradiuspropertydefarea(self):# 只读属性return3.14*self.radius**2propertydefradius(self):returnself._radiusradius.setterdefradius(self,value):ifvalue0:self._radiusvalueelse:raiseValueError(半径必须大于0)cCircle(5)print(c.area)# 78.5无需调用方法直接像属性一样访问c.radius-1# 报错ValueError七、总结Python的面向对象编程以“简洁”和“灵活”为核心特点类与对象的定义直观易懂成员属性和方法的分类清晰封装机制通过命名约定实现“约定优于强制”而动态特性、内置方法和属性装饰器等亮点则进一步提升了代码的表现力。掌握这些核心概念不仅能够帮助我们编写出结构清晰、可维护的代码还能为学习继承、多态等更高级的OOP特性奠定基础。在实际开发中应遵循“高内聚、低耦合”的原则合理使用封装、抽象等机制让代码既符合OOP思想又充分发挥Python的语言优势。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑