Python 中如何定义私有属性和方法?

推荐答案

在 Python 中,可以通过在属性或方法名前加上双下划线 __ 来定义私有属性和方法。私有属性和方法只能在类的内部访问,外部无法直接访问。

-- -------------------- ---- -------
----- --------
    --- ---------------
        ------------------------ - ----- -- --------

    --- -----------------------
        ------ ----- -- - ------- -------

    --- --------------------
        ------ -----------------------

本题详细解读

1. 私有属性的定义

在 Python 中,私有属性是通过在属性名前加上双下划线 __ 来定义的。例如:

这种命名方式会触发 Python 的名称修饰(Name Mangling)机制,使得该属性在外部无法直接访问。实际上,Python 会将 __private_attribute 转换为 _MyClass__private_attribute,因此外部访问时需要使用转换后的名称。

2. 私有方法的定义

私有方法的定义方式与私有属性类似,也是在方法名前加上双下划线 __。例如:

同样地,私有方法也会触发名称修饰机制,外部无法直接调用该方法。

3. 访问私有属性和方法

虽然私有属性和方法在外部无法直接访问,但可以通过类内部的公共方法来间接访问。例如:

通过 public_method,外部代码可以间接调用 __private_method

4. 名称修饰机制

Python 的名称修饰机制是为了避免子类意外覆盖父类的私有属性和方法。名称修饰后的名称格式为 _类名__属性名_类名__方法名。例如:

虽然可以通过这种方式访问私有属性和方法,但不推荐这样做,因为这违背了封装的原则。

纠错
反馈