📜  Python中的私有方法(1)

📅  最后修改于: 2023-12-03 15:34:27.026000             🧑  作者: Mango

Python中的私有方法

在Python中,所有方法都是公开的,但是我们有一种特殊的方法称之为私有方法,它们只能在类内部被调用,无法从类的外部直接访问。无论是实例还是子类都无法调用私有方法。

定义私有方法

Python中通过在方法名前加上两个下划线'__'来定义私有方法:

class MyClass:
    def __my_private_method(self):
        pass

注意到上面的私有方法前有两个下划线'__',这是定义私有方法的语法。

如何访问私有方法

从类的外部无法直接访问私有方法,但是我们可以通过间接访问来调用。

方式1: 使用下划线'_'

当我们在调用私有方法时,在方法名前面添加一个下划线'_'即可,例如:

obj = MyClass()
obj._MyClass__my_private_method()

明显,这种方式并不是真正的私有,它只是不建议这样做而已,如果你愿意,照样可以访问。

方式2: 使用公开方法

如果我们需要外部调用私有方法,我们可以在类的外部定义一个公开的方法,然后再调用私有方法,例如:

class MyClass:
    def __my_private_method(self):
        pass

    def my_public_method(self):
        self.__my_private_method()

obj = MyClass()
obj.my_public_method()

这种方式会稍微麻烦一些,因为我们需要先定义一个公开的方法,然后才能调用私有方法。

总结一下,Python中虽然有私有方法的概念,但并没有真正的私有方法,我们只能通过约定或方法重命名来实现类似私有方法的效果。