python封装
Python中的封装是指将类的属性和方法隐藏起来,只对外部提供一个接口来访问,而不暴露内部的实现细节。封装可以保证类的安全性,防止外部直接修改类的属性或调用类的私有方法。
Python中的封装通常使用以下两种方式:
- 属性访问控制
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'
- 方法访问控制
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'
``
原文地址: https://www.cveoy.top/t/topic/fg16 著作权归作者所有。请勿转载和采集!