一、property属性

  • 作用:把类方法当做属性来使用
  • 优点:简化代码使用

二、定义property属性的方式

1. 装饰器方式

  • @property:修饰获取值的方法,表示把方法当做属性使用,当获取属性时会执行下面修饰的方法
  • @方法名.setter:修饰设置值的方法,表示把方法当做属性使用,当设置属性时会执行下面修饰的方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class Person(object):

def __init__(self):
self.__age = 0

# 装饰器方式的property, 把age方法当做属性使用, 表示当获取属性时会执行下面修饰的方法
@property
def age(self):
return self.__age

# 把age方法当做属性使用, 表示当设置属性时会执行下面修饰的方法
@age.setter
def age(self, new_age):
if new_age >= 150:
print("成精了")
else:
self.__age = new_age

# 创建person
p = Person()
print(p.age)
p.age = 100
print(p.age)
p.age = 1000

# 0
# 100
# 成精了

2. 类属性方式

  • 定义方式:类属性 = property(获取值方法, 设置值方法)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class Person(object):

def __init__(self):
self.__age = 0

def get_age(self):
"""当获取age属性的时候会执行该方法"""
return self.__age

def set_age(self, new_age):
"""当设置age属性的时候会执行该方法"""
if new_age >= 150:
print("成精了")
else:
self.__age = new_age

# 类属性方式的property属性
age = property(get_age, set_age)

# 创建person
p = Person()
print(p.age)
p.age = 100
print(p.age)
p.age = 1000

# 0
# 100
# 成精了