第十九节:封装和私有性

第十九节:封装和私有性

不过尔尔 11 2021-07-18

封装

封装是一种将数据(属性)和操作(方法)包装在一个类中的概念。它限制了外部代码对类的内部数据和实现细节的直接访问,通过提供公共接口来访问和修改数据。这有助于隔离和隐藏类的内部实现,使得修改类的实现不会影响到外部代码。

在Python中,封装的实现是通过属性和方法的访问控制来实现的。默认情况下,Python中的属性和方法都是公共的(可访问的),但可以使用特殊的命名约定来表示私有属性和方法。

私有属性和方法

在Python中,可以通过在属性或方法的名称前面添加一个或多个下划线(_)来表示它们是私有的,即不应该直接访问。私有属性和方法的命名约定是以一个下划线开始,例如 _my_private_attribute_my_private_method()

 class Person:
     def __init__(self, name, age):
         self._name = name  # 私有属性
         self._age = age    # 私有属性
 ​
     def _my_private_method(self):  # 私有方法
         return f"{self._name} is {self._age} years old."
 ​
     def speak(self):
         return "Hello, I am " + self._name
 ​
 # 创建Person类的实例
 person = Person("Alice", 30)
 ​
 # 直接访问私有属性(不推荐)
 print(person._name)  # 输出: "Alice"
 ​
 # 调用私有方法(不推荐)
 print(person._my_private_method())  # 输出: "Alice is 30 years old."
 ​
 # 推荐使用公共接口来访问属性和方法
 print(person.speak())  # 输出: "Hello, I am Alice"

虽然在Python中可以访问私有属性和方法,但强烈建议使用公共接口来访问它们,以遵守封装的原则。这样可以隔离类的内部实现,使得修改类的实现时不会影响到外部代码。

封装和私有性是面向对象编程的重要原则之一,它们帮助你创建更加模块化和安全的代码。通过封装,你可以隐藏类的内部细节,提供清晰的接口供外部使用,从而提高代码的可维护性和可复用性。