gpt4 book ai didi

python - 使用私有(private)成员对类进行子类化

转载 作者:行者123 更新时间:2023-11-28 20:12:20 25 4
gpt4 key购买 nike

python 的真正优点之一是简单,您可以使用它来命名与访问器同名的变量:

self.__value = 1

def value():
return self.__value

有没有一种简单的方法可以访问我希望子类化的类的私有(private)成员?我经常希望简单地处理类内部的原始数据对象,而不必一直使用访问器和修改器。

我知道这似乎违背了私有(private)和公共(public)的一般概念,但通常我试图子类化的类是我自己的一个,我很乐意将成员公开给子类而不是实例那个类的。有提供这种区别的简洁方法吗?

最佳答案

不方便,没有进一步破坏封装。双下划线属性通过在访问它的类的前面加上“_ClassName”来命名。因此,如果您有一个具有“__value”属性的“ContainerThing”类,该属性实际上存储为“_ContainerThing__值'。更改类名(或重构分配属性的位置)将意味着破坏所有尝试访问该属性的子类。

这就是为什么双下划线名称修改(这不是真正的“私有(private)”,只是“不方便”)不是一个好主意。只需使用一个单个 前导下划线。每个人都知道不要触及您的“私有(private)”属性,您仍然可以在子类和其他非常方便的情况下访问它。双下划线属性的名称重整仅用于避免真正特定于特定类的属性的名称冲突,这种情况极为罕见。它不提供额外的“安全性”,因为即使是名称困惑的属性也很容易访问。

请注意,“__value”和“value”(以及“_value”)不是同一个名称。下划线是名称的一部分。

关于python - 使用私有(private)成员对类进行子类化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/162798/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com