一般什么情况会对普通变量或属性前后加双下划线
时间: 2024-03-28 08:41:44 浏览: 67
在 Python 中,以双下划线 `__` 开头和结尾的变量或属性通常被称为“私有变量”或“私有属性”,它们的含义是只能在类的内部访问,不能在类的外部访问。这是一种封装的机制,可以保证类的内部实现细节不会被外部访问者随意修改,从而提高代码的安全性和可维护性。
例如,假设我们有一个名为 `Person` 的类,它有一个 `name` 属性和一个 `__age` 属性,其中 `name` 是公共属性,可以被外部访问,而 `__age` 是私有属性,只能在类的内部访问。代码如下所示:
```
class Person:
def __init__(self, name, age):
self.name = name
self.__age = age
def get_age(self):
return self.__age
def set_age(self, age):
if age < 0:
print("Age cannot be negative!")
else:
self.__age = age
person = Person("Alice", 20)
print(person.name) # 输出: Alice
print(person.get_age()) # 输出: 20
person.set_age(-10) # 输出: Age cannot be negative!
person.set_age(30)
print(person.get_age()) # 输出: 30
```
在上述代码中,我们定义了一个 `Person` 类,并在其中添加了一个 `name` 属性和一个 `__age` 属性。在类的内部,我们定义了一个 `get_age` 方法和一个 `set_age` 方法,用于获取和设置 `__age` 属性的值。在类的外部,我们可以通过访问 `name` 属性来获取 `Person` 对象的名字,但是不能直接访问 `__age` 属性,必须通过类的方法来访问。
需要注意的是,Python 中的“私有变量”或“私有属性”只是一种约定,而不是强制规定。实际上,如果你知道私有变量或属性的名字,仍然可以通过类的实例来访问和修改它们。因此,我们应该将私有变量或属性的命名方式视为一种编程规范,而不是一种强制规则。
阅读全文