在Python中,私有变量通常是通过在属性名前加上两个下划线`__`来定义的。根据Python的命名约定,这样的变量名会被解释器自动转换为`_ClassName__PropertyName`的形式,其中`ClassName`是类的名称。然而,这种转换并不是强制的,不同的Python解释器可能会有不同的处理方式。
要访问Python中的私有变量,通常有以下几种方法:
通过类的方法访问
在类内部定义特殊的方法(如`get_`和`set_`方法)来访问和修改私有变量。
```python
class Person(object):
def __init__(self, name, sex):
self.__name = name
self.__sex = sex
def get_name(self):
return self.__name
def get_sex(self):
return self.__sex
def set_sex(self, sex):
self.__sex = sex
p = Person('mary', 'female')
print(p.get_name()) 输出: mary
使用property装饰器
可以使用`property`装饰器将访问和修改私有变量的方法转换为属性,从而允许外部直接访问。```pythonclass Person(object):
def __init__(self):
self.__age = 18
def get_age(self):
return self.__age
def set_age(self, age):
if age < 0:
print('年龄不能小于0')
else:
self.__age = age
age = property(get_age, set_age)
xiaoming = Person()
xiaoming.age = 15
print(xiaoming.age) 输出: 15
使用特殊变量名访问
尽管不推荐,但可以通过直接访问`_ClassName__PropertyName`形式的变量名来访问私有变量。
```python
class Person(object):
def __init__(self, name):
self.__name = name
p = Person('mary')
print(p._Person__name) 输出: mary
请注意,直接访问私有变量通常被认为是不良的编程实践,因为它破坏了封装原则。在类外部,应该使用类提供的方法来访问和修改私有变量。

