akh*_*ddy 6 encapsulation class protected access-modifiers python-3.x
在Python中,类中的受保护变量和公共变量有什么区别
class A:
def __init__(self):
self._protected="protected"
self.__private="private"
self.public="public"
>>> a = A()
>>> a.public
'public'
>>> a._protected
'protected'
>>>
Run Code Online (Sandbox Code Playgroud)
有人可以解释一下其中的区别,并指导我如何在 python 中使用受保护的变量吗[如果我的方法用法是错误的]
提前致谢。
除了“public”之外,这些术语都没有真正适用于 Python。
__由于名称受到破坏,“私有”版本只能“工作” ,但仍然可以访问它。
>>> a = A()
>>> print(a._A__private)
private
Run Code Online (Sandbox Code Playgroud)
这里的“保护”是更弱的“保护”。如图所示,可以正常访问。按照惯例,不应使用单个下划线前缀。 单个下划线前缀在通配符导入时有一定作用,但我不认为它在属性名称中使用时有任何作用。
Python 没有“私有”类属性。可能有一些聪明的方法可以模仿它们,但它们充其量只是黑客。
公共成员(通常是在类中声明的方法)可以从类外部访问。调用公共方法需要同一类的对象。私有实例变量和公共方法的这种安排保证了数据封装的原则。
类的受保护成员可从类内部访问,也可供其子类使用。不允许其他环境访问它。这使得子类可以继承父类的特定资源。
Python 没有任何机制可以有效限制对任何实例变量或方法的访问。Python 规定了一种约定,即在变量/方法的名称前添加单下划线或双下划线,以模拟受保护和私有访问说明符的行为。
默认情况下,Python 类中的所有成员都是公共的。任何成员都可以从类环境外部访问。
大多数情况下使用受到保护。不允许直接访问变量。
| 归档时间: |
|
| 查看次数: |
4630 次 |
| 最近记录: |