Python中的封装是指将类的属性和方法隐藏起来,只对外部提供一个接口来访问,而不暴露内部的实现细节。封装可以保证类的安全性,防止外部直接修改类的属性或调用类的私有方法。

Python中的封装通常使用以下两种方式:

  1. 属性访问控制

Python中使用下划线来表示属性的访问权限,包括单下划线和双下划线。

单下划线表示该属性是受保护的,外部可以访问,但不建议直接修改,应该通过类的接口方法来访问和修改。

双下划线表示该属性是私有的,外部不能直接访问或修改,只能通过类的方法来访问和修改。

示例代码:

class MyClass:
    def __init__(self):
        self._protected_attr = 'protected'
        self.__private_attr = 'private'

    def get_protected_attr(self):
        return self._protected_attr

    def set_protected_attr(self, value):
        self._protected_attr = value

    def get_private_attr(self):
        return self.__private_attr

    def set_private_attr(self, value):
        self.__private_attr = value

obj = MyClass()
print(obj.get_protected_attr())  # 输出:protected
obj.set_protected_attr('new_protected')
print(obj.get_protected_attr())  # 输出:new_protected
print(obj.get_private_attr())  # 报错:AttributeError: 'MyClass' object has no attribute 'private_attr'
  1. 方法访问控制

Python中使用下划线来表示方法的访问权限,包括单下划线和双下划线。

单下划线表示该方法是受保护的,外部可以调用,但不建议直接调用,应该通过类的接口方法来调用。

双下划线表示该方法是私有的,外部不能直接调用。

示例代码:

class MyClass:
    def __init__(self):
        pass

    def _protected_method(self):
        print('protected method')

    def __private_method(self):
        print('private method')

    def get_protected_method(self):
        self._protected_method()

    def get_private_method(self):
        self.__private_method()

obj = MyClass()
obj.get_protected_method()  # 输出:protected method
obj.get_private_method()  # 报错:AttributeError: 'MyClass' object has no attribute '__private_method'
``
python封装

原文地址: https://www.cveoy.top/t/topic/fg16 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录