MST

星途 面试题库

面试题:Python中如何定义类的私有属性与私有方法

请详细说明在Python中定义类的私有属性和私有方法的语法,并举例说明如何在类内部访问私有属性和调用私有方法。
19.9万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试

在Python中,并没有真正意义上的私有属性和私有方法,但可以通过在属性和方法名前加双下划线 __ 来模拟私有特性。

定义私有属性和私有方法的语法

  • 私有属性:在属性名前加双下划线 __,例如 self.__private_attr
  • 私有方法:在方法名前加双下划线 __,例如 def __private_method(self)

示例代码

class MyClass:
    def __init__(self):
        # 定义私有属性
        self.__private_attr = 42  

    # 定义私有方法
    def __private_method(self):
        return "This is a private method"  

    def public_method(self):
        # 在类内部访问私有属性
        print(f"Accessing private attribute: {self.__private_attr}")  
        # 在类内部调用私有方法
        result = self.__private_method()  
        print(f"Calling private method: {result}")  

测试代码

obj = MyClass()
obj.public_method()

在上述代码中,__private_attr 是私有属性,__private_method 是私有方法。在 public_method 中,通过 self 来访问私有属性和调用私有方法。虽然Python没有严格的访问控制,但这种命名约定会让解释器对这些属性和方法进行名称改写,从而防止在类外部直接访问。例如,在类外部尝试访问 obj.__private_attr 会引发 AttributeError,但其实通过名称改写后的形式 obj._MyClass__private_attr 还是可以访问到的,不过这种方式不推荐使用,因为名称改写的规则是内部实现细节,可能会改变。