在Python中,私有方法是通过在方法名前加两个下划线来定义的。这种命名约定并不会改变方法的访问权限,它只是一种约定,表明该方法应该被视为私有的,即不应该在类的外部直接调用。Python内部通过名称修饰(name mangling)技术,将带有两个下划线的方法名更改为`_classname__methodname`的形式,以防止外部直接访问。
下面是一个定义私有方法的例子:
```python
class MyClass:
def __init__(self):
self.__private_attribute = "I'm private"
def __private_method(self):
print("This is a private method")
def public_method(self):
print("Accessing private attribute via public method:")
print(self.__private_attribute)
self.__private_method()
创建类的实例
my_instance = MyClass()
调用公共方法,可以间接访问私有属性和方法
my_instance.public_method()
下面的代码会抛出 AttributeError,因为不能直接访问私有方法
my_instance.__private_method()
请注意,尽管不能直接通过实例访问私有方法,但可以通过类的公共方法间接访问,如上面的`public_method`所示。直接尝试访问私有方法(如`my_instance.__private_method()`)将会导致`AttributeError`异常。