一、property特性
通过存取方法定义的属性叫特性,即有get和 set.
定义property属性有两种方式
- 类属性方式(函数property)
- 装饰器方式
1.1 类属性方式(函数property)
类属性方式很简单,定义了set和get函数后,在加上一行代码 property(get, set) ,就创建一个特性
property的参数说明:
第一个参数是获取属性时要执行的方法
第二个参数是设置属性时要执行的方法
class Person(object):
def __init__(self):
self.__age = 0
def get_age(self):
return self.__age
def set_age(self, new_age):
self.__age = new_age
# 类属性方式的property属性
age = property(get_age, set_age)
person1 = Person()
print(person1.age)
person1.age=20
print(person1.age)
这样person类的age 就是一个特性,不需要set_age来设置年龄,get_age来读取年龄
2 .装饰器方式
- 当获取属性时 使用@property 表示把方法当做属性使用,
- 表示当设置属性时 使用 使用 @方法名.setter 来当作属性使用
- 装饰器方式的property属性修饰的方法名 和@方法名.setter 修饰的方法名字 一定要一样。
class Person(object): def __init__(self): self.__age = 0 # 当获取属性时 使用@property 表示把方法当做属性使用, @property def age(self): return self.__age # 表示当设置属性时 使用 使用 @方法名.setter 来当作属性使用 @age.setter def age(self, new_age): self.__age = new_age person = Person() print(person.age) person.age = 20 print(person.age)