python中定义一个类,有一个私有属性__age,程序能提供获取和设置age的方法
时间: 2024-10-12 17:12:59 浏览: 36
Python中私有属性的定义方式
在Python中,为了实现对私有属性`__age`的访问控制,通常会提供公共方法来进行获取和设置。虽然`__age`这个名字前面有两个下划线表示它是私有的,但在Python中,实际上是可以通过实例对象直接访问这种“双下划线”命名的变量。然而,这是一种约定,而不是强制性的限制。
如果你想保证这个属性对外部来说是不可直接修改的,可以提供getter和setter方法,如下所示:
```python
class Person:
def __init__(self, age):
self._age = age # 使用单下划线进行包装,作为实际的私有属性
# getter方法,用于获取年龄
def get_age(self):
return self._age
# setter方法,用于设置年龄,这里可以添加一些验证逻辑
def set_age(self, new_age):
if not isinstance(new_age, int) or new_age < 0:
raise ValueError("Age must be a non-negative integer.")
else:
self._age = new_age
# 示例
person = Person(30)
print(person.get_age()) # 输出:30
person.set_age(35) # 正常设置
try:
person.set_age(-5) # 设置无效值
except ValueError as e:
print(e) # 输出:Age must be a non-negative integer.
```
阅读全文