python中的protected和public变量有什么区别

在python中,类中的protected和public变量有什么区别

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

>>> a = A()
>>> a.public
'public'
>>> a._protected
'protected'
>>> 

有人可以解释一下两者之间的区别,并指导我如何在python中使用受保护的变量吗? [如果我的方法用法错误,则为

预先感谢。

iCMS 回答:python中的protected和public变量有什么区别

除了“ public”以外,这些术语中的任何一个都不适用于Python。

由于__对名称的影响,“私有”版本只能“起作用”,但是仍然可以访问它。

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

此处的“受保护”甚至是较弱的“保护”。您可以正常显示该文件。仅根据约定,不应使用单个下划线前缀。 A single underscore prefix has some effect when wildcard importing,,但我认为在属性名称中使用它不会产生任何效果。

Python没有“私有”类属性。可能有一些聪明的方法可以模仿它们,但充其量只是hack。

,

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

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

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

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

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

本文链接:https://www.f2er.com/1730086.html

大家都在问