📅  最后修改于: 2023-12-03 15:34:27.026000             🧑  作者: Mango
在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中虽然有私有方法的概念,但并没有真正的私有方法,我们只能通过约定或方法重命名来实现类似私有方法的效果。