当前位置: 首页 > 面试题库 >

Python中的“私有”(实现)类

景帅
2023-03-14
问题内容

我正在编写一个由两部分组成的小型Python模块:

  • 一些定义公共接口的功能,
  • 上述功能使用的实现类,但在模块外部没有意义。

首先,我决定通过在使用它的函数内部定义该实现类来“隐藏”该实现类,但这会影响可读性,并且如果多个函数重用同一类,则无法使用该实现类。

因此,除了注释和文档字符串外,是否存在将类标记为“私有”或“内部”的机制?我知道下划线机制,但是据我了解,它仅适用于变量,函数和方法名称。


问题答案:

使用单个下划线前缀:

class _Internal:
    ...

这是“内部”符号的官方Python约定;“从模块导入*”不会导入下划线前缀的对象。

编辑:引用单个下划线约定



 类似资料:
  • 本文向大家介绍实例讲解Python中的私有属性,包括了实例讲解Python中的私有属性的使用技巧和注意事项,需要的朋友参考一下 在Python中可以通过在属性变量名前加上双下划线定义属性为私有属性,如例子: 执行输出: 访问私有属性__name时居然提示找不到属性成员而不是提示权限之类的,于是当你这么写却不报错: 执行结果: 1 lisi 在Python中就算继承也不能相互访问私有变量,如: 执行

  • 问题内容: 我看到很多执行“松散”私有变量/功能的python代码。他们将用一个下划线(例如_foo)声明函数/变量,然后仅在类/文件中使用它。他们不使用双下划线确实让我感到烦恼,因为最终,有人会从班级外部将此人称为“私人”成员。 是否有某种方法可以在单个下划线上强制执行隐私(不更改为双下划线)?谢谢! 问题答案: 否。这就是python的理念:不要让编译器/解析器强制执行隐私,因为 想要 访问私

  • 问题内容: Python使我们能够在类中创建“私有”方法和变量,方法是在名称前加上双下划线,例如:。那么,如何解释这一点 这是怎么回事?! 我会为那些不太了解的人解释一下。 我在那里所做的是创建一个具有公共方法和私有方法的类,并将其实例化。 接下来,我将其称为public方法。 接下来,我尝试调用其私有方法。 这里看起来一切都很好。我们无法调用它。实际上,它是“私有”的。好吧,实际上不是。在对象上

  • 本文向大家介绍Python 私有函数的实例详解,包括了Python 私有函数的实例详解的使用技巧和注意事项,需要的朋友参考一下 Python 私有函数的实例详解 与大多数语言一样,Python 也有私有的概念: • 私有函数不可以从它们的模块外面被调用 • 私有类方法不能够从它们的类外面被调用 • 私有属性不能够从它们的类外面被访问 与大多数的语言不同,一个 Python 函数,方法,或属性是私有

  • 在 Python 的面向对象编程中,私有属性是只能在类的实例方法中访问的属性,不允许在外界访问私有属性。 1. 私有属性的定义 1.1 定义 在属性名称前加上前缀 __,表示该属性为私有属性,示例代码如下: class Object: def method(self): self.__private_attribute = 123 在第 3 行,创建一个私有属性 __pr