python中类的私有变量
时间: 2023-08-27 22:22:49 浏览: 66
在Python中,类的私有变量可以通过在变量名前面加上两个下划线来定义。这样定义的私有变量只能在类的内部访问,无法从类的外部直接访问。这种机制被称为名称修饰(name mangling),它会将私有变量的名称进行一定的修改,使其在外部变得不可见。
以下是一个示例:
```python
class MyClass:
def __init__(self):
self.__private_var = 10
def __private_method(self):
print("This is a private method.")
def public_method(self):
print("This is a public method.")
self.__private_method()
obj = MyClass()
obj.public_method()
# 输出: This is a public method.
# This is a private method.
print(obj.__private_var) # 这行代码会报错
# 输出: AttributeError: 'MyClass' object has no attribute '__private_var'
obj.__private_method() # 这行代码会报错
# 输出: AttributeError: 'MyClass' object has no attribute '__private_method'
```
在上面的示例中,`__private_var` 和 `__private_method` 都是类的私有成员。我们可以看到,当我们尝试从类的外部访问这些私有成员时,会抛出 AttributeError 异常。
需要注意的是,私有变量和私有方法只是一种约定,并不是严格的限制。如果知道了私有变量或私有方法的名称修饰方式,仍然可以通过修改名称来访问它们。但是这种做法是不被推荐的,因为它违反了封装的原则。