Python面向对象编程:封装、继承与多态解析

2 下载量 186 浏览量 更新于2024-08-30 收藏 250KB PDF 举报
"这篇资源详细介绍了Python面向对象编程的进阶知识,包括封装、继承和多态这三大面向对象编程的核心概念。同时,通过实例展示了如何定义类、创建对象以及设置访问权限。" 在Python中,面向对象编程是一种重要的编程范式,它将数据和操作这些数据的方法封装在一起,形成了类(Class)。面向对象的三大核心概念是封装、继承和多态。 1. 封装:封装是将数据和方法捆绑在一起,形成一个独立的单元,使得数据和其操作保持一致性和安全性。例如,我们可以创建一个`Person`类,将姓名和年龄作为属性,然后定义方法如`walk()`来表现人物的行为。在Python中,通过`self`关键字来引用对象自身的属性和方法,例如`self._name`和`self._age`。 ```python class Person: def __init__(self, name, age): self._name = name self._age = age def walk(self): print(f"I am {self._name}, I can run") ``` 2. 继承:继承允许我们创建一个新的类(子类),这个类会拥有父类的所有属性和方法。这有助于代码重用和模块化。例如,`Student`可以继承自`Person`类,继承了`Person`的属性和行为,并可以添加特定于学生的属性和方法。 ```python class Student(Person): def study(self): print(f"{self._name} is studying") ``` 3. 多态:多态是指不同类的对象可以响应相同的消息(方法调用)。子类可以覆盖或扩展父类的方法,从而表现出不同的行为。比如,虽然`Student`和`Teacher`都继承自`Person`,但他们各自的`work`方法可能会有不同的实现,这就是多态性。 ```python class Teacher(Person): def work(self): print(f"{self._name} is teaching") student = Student('Alice', 20) teacher = Teacher('Bob', 30) student.walk() # 子类对象调用父类方法 teacher.work() # 不同的子类对象响应相同的方法,但行为不同 ``` 4. 访问权限:Python没有像Java那样的明确访问控制(public, private, protected, default)。默认所有成员都是公开的,但可以通过在变量名前加两个下划线`__`来表示私有成员,这样的成员在外部不易直接访问,但仍可通过特殊方法(如`_get_name`)进行访问控制。 ```python class PrivatePerson(Person): def __init__(self, name, age): self.__name = name self.__age = age def _get_name(self): return self.__name p = PrivatePerson('Charlie', 25) print(p._get_name()) # 通过特殊方法访问私有属性 ``` Python的面向对象特性提供了一种强大的方式来组织和管理代码,使得程序更加灵活、可维护和易于扩展。通过熟练掌握封装、继承和多态,开发者可以构建出更加复杂且高效的系统。