【发布时间】:2019-05-29 05:49:29
【问题描述】:
我正在尝试更多地了解 python 变量的范围。
到目前为止,我不想破坏或违反声明为私有变量的封装,即“self._variable”。
我想知道如果子类直接从其父类调用变量是否会破坏封装。例如:
class Parent:
def __init__():
self._randomVariable = ''
class Child(Parent):
def__init__():
super().__init__()
def doSomething():
self._randomVariable = 'Test'
Chid.doSomething() 是否在技术上打破了直接在其方法中调用 self._randomVariable 的封装,即使它是子类?
我找不到任何关于封装的 Python 特定内容,而是基于 Java 的内容。 Java和Python的思路是一样的吗?
【问题讨论】:
-
_randomValue是protected属性。所以不行。如果是__randomValue,那就是。 -
您能否详细说明受保护属性的含义以及两个“_”与一个的区别?
-
另外不要忘记 - 所有这些 _ 和 __ 只是约定 - 即使没有它们,代码也可以工作 - 它们只是向代码阅读器显示您的意图
-
@Drako 在
_的情况下,是的,这是一个约定。但不适用于__,因为 python 会对这些属性进行名称修改并尝试隐藏它们。 -
@Drako 对,我明白了。我认为在任何时候继续练习封装都是一个好习惯,因为据我了解,其他语言会抛出错误。
标签: python python-3.x