python中的受保护变量和公共变量之间的区别是什么



在python中,类中的受保护变量和公共变量之间有什么区别

class A:
def __init__(self):
self._protected="protected"
self.__private="private"
self.public="public"
>>> a = A()
>>> a.public
'public'
>>> a._protected
'protected'
>>> 

有人能解释一下区别吗,并指导我如何在python中使用受保护的变量[如果我的方法是使用错误的话]

提前感谢。

除";"公共";真正适用于Python。

";私人的";仅版本";作品";由于__对名称的破坏作用,但仍然可以访问它。

>>> a = A()
>>> print(a._A__private)
private

"受保护";这里甚至更弱";"保护";。它可以正常访问,如您所示。按照惯例,不应该使用单个下划线前缀。通配符导入时,单个下划线前缀会有一些效果,但我认为在属性名称中使用时不会有任何效果。

Python没有";私人的";类属性。也许有一些聪明的方法可以模仿它们,但它们充其量只是黑客。

公共成员(通常是在类中声明的方法(可以从类外部访问。调用公共方法需要同一类的对象。私有实例变量和公共方法的这种安排确保了数据封装的原则。

类的受保护成员可以从类内访问,也可以用于其子类。不允许任何其他环境访问它。这使得父类的特定资源可以由子类继承。

Python没有任何机制可以有效地限制对任何实例变量或方法的访问。Python规定了一种惯例,即在变量/方法的名称前加一个或两个下划线,以模拟受保护和私有访问说明符的行为。

默认情况下,Python类中的所有成员都是公共的。任何成员都可以从类环境之外访问。

在大多数情况下使用受保护的。Doesnt允许直接访问变量。

最新更新