python属性property详细介绍案例
时间: 2023-11-24 13:08:08 浏览: 46
Python中的属性(property)是一种特殊类型的方法,它可以用来访问和设置类的属性,但是访问和设置属性的方式与普通方法不同。在这里,我将为您提供一个简单的示例,以演示如何使用属性。
例如,我们创建一个名为Person的类:
```python
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
```
该类有两个实例变量:name和age。现在,我们想要使用属性来访问和设置这两个变量,我们可以使用@property装饰器。
```python
class Person:
def __init__(self, name, age):
self._name = name
self._age = age
@property
def name(self):
return self._name
@name.setter
def name(self, value):
self._name = value
@property
def age(self):
return self._age
@age.setter
def age(self, value):
if value < 0:
raise ValueError("age can't be negative")
self._age = value
```
在这个例子中,我们使用@property装饰器来定义两个属性: name和age。它们的getter方法用于获取属性值,setter方法用于设置属性值。
注意,在setter方法中,我们可以添加一些验证逻辑。在这个例子中,我们检查年龄是否为负数。
现在,我们可以创建一个Person对象,并使用属性来访问和设置它的属性。
```python
person = Person("Alice", 25)
print(person.name) # 输出 "Alice"
person.name = "Bob"
print(person.name) # 输出 "Bob"
print(person.age) # 输出 25
person.age = 30
print(person.age) # 输出 30
person.age = -1 # 抛出 ValueError: age can't be negative
```
在这个例子中,我们创建了一个Person对象,并使用属性来访问和设置它的属性。我们可以使用name属性来获取和设置Person对象的名称,使用age属性来获取和设置Person对象的年龄。
在设置年龄时,如果年龄为负数,我们会抛出ValueError异常,从而防止设置不合法的属性值。
这是一个简单的属性的例子,您可以根据自己的需求和逻辑来编写更复杂的属性。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)