编写一个私有属性age的赋值以及取值操作在赋值时对数据的规范性进行校验
时间: 2024-05-07 21:21:32 浏览: 142
在Python中,可以使用@property装饰器来定义属性,并使用.setter装饰器来定义属性的赋值方法。可以在setter方法中对属性值进行校验,确保数据的规范性。
以下是一个例子:
```python
class Person:
def __init__(self, name, age):
self.name = name
self._age = age
@property
def age(self):
return self._age
@age.setter
def age(self, value):
if not isinstance(value, int):
raise TypeError("Age must be an integer")
if value < 0 or value > 120:
raise ValueError("Age must be between 0 and 120")
self._age = value
```
在这个例子中,我们定义了一个Person类,其中包含了私有属性_age。使用@property装饰器定义了age属性,并在其getter方法中返回私有属性_age的值。在setter方法中对传入的值进行了校验,确保其为整数并且在0到120之间。如果不符合条件,就会抛出TypeError或ValueError异常。
使用这个Person类,我们可以通过以下方式来赋值和取值:
```python
person = Person("Bob", 25)
print(person.age) # 输出: 25
person.age = 30
print(person.age) # 输出: 30
person.age = "30" # 抛出 TypeError 异常
person.age = 130 # 抛出 ValueError 异常
```
在上面的例子中,当我们尝试为age属性赋值一个非整数或者不在0到120之间的值时,会抛出TypeError或ValueError异常,确保数据的规范性。
阅读全文
相关推荐


















