Python 100天,从新手到大师——面向对象编程进阶:可见性、动态属性、静态方法与继承(day19)

张开发
2026/5/20 9:10:00 15 分钟阅读
Python 100天,从新手到大师——面向对象编程进阶:可见性、动态属性、静态方法与继承(day19)
面向对象编程进阶:可见性、动态属性、静态方法与继承开篇概述在上一节中,我们学习了面向对象编程的基础:类与对象、封装与初始化。今天,我们将进一步探索面向对象编程的进阶内容,包括属性的可见性控制、动态属性的添加与限制、静态方法与类方法的使用,以及面向对象中极为重要的继承与多态特性。这些知识将帮助你编写更加健壮、灵活且易于维护的Python代码。一、可见性与属性装饰器在面向对象编程中,封装不仅意味着将数据和方法绑定在一起,还包括对内部数据的访问控制。Python通过命名约定来实现属性的可见性,并没有严格的私有机制,但我们可以使用下划线来表示属性的访问级别。1.1 私有属性与受保护属性私有属性:以双下划线__开头,在类外部不能直接访问,但在类内部可以访问。受保护属性:以单下划线_开头,这是一种约定,表示该属性不应在类外部直接访问,但Python并不强制限制。classStudent:def__init__(self,name,age):self.__name=name# 私有属性self.__age=age# 私有属性defstudy(self,course_name):print(f'{self.__name}正在学习{course_name}.')stu=Student('王大锤',20)stu.study('Python程序设计')# 王大锤正在学习Python程序设计.# print(stu.__name) # AttributeError: 'Student' object has no attribute '__name'注意:Python的私有属性是通过“名称修饰”(name mangling)实现的,实际上在类外部可以通过_类名__属性名访问(如stu._Student__name),但这违背了封装原则,不推荐使用。1.2 使用@property装饰器@property装饰器可以将一个方法变成属性调用,同时允许我们定义属性的获取(getter)、设置(setter)和删除(deleter)方法。classPerson:def__init__(self,name,age):self._name=name self._age=age@propertydefname(self):returnself._name@propertydefage(self):returnself._age@age.setterdefage(self,value):ifvalue0:raiseValueError('年龄不能为负数')self._age=value p=Person(

更多文章