1. property属性
class Goods(object): @property def size(self): return 100 obj = Goods() ret = obj.size # 调用属性 print(ret)
//test2
class Pager(object): def __init__(self, current_page): # 用户当前请求的页码(第一页,第二页....) self.current_page = current_page # 每页默认显示10条数据 self.per_items = 10 @property def start(self): val = (self.current_page - 1) * self.per_items return val @property def end(self): val = self.current_page * self.per_items return val p = Pager(1) print(p.start) # 就是起始值,即 m print(p.end) # 就是结束值,即 n
2. property属性的两种方式
-
装饰器 即:在方法上应用装饰器
-
类属性 即:在类中定义值为property对象的类属性
2.1 装饰器方法
在类的实例方法上应用@property装饰器
经典类,具有一种@property装饰器
class Goods(object): @property def gname(self): return "douzi" obj = Goods() ret = obj.gname # 自动执行 @property 修饰的price方法,并获取方法的返回值 print(ret)
新式类,具有三种@property装饰器
@property
@xxx.setter
@xxx.deleter
class Goods(object): """ python3 里面才有 @xxx.setter, @xxx.deleter python2 里面只有 @property """ @property def gname(self): return "@property" @gname.setter def gname(self, value): print("@gname.setter", value) @gname.deleter def gname(self): print("@gname.deleter") obj = Goods() ret = obj.gname # 自动执行 @property 修饰的price方法,并获取方法的返回值 print(ret) obj.gname = "cute" # 自动执行 @gname.setter 修饰的price方法,并将 123 赋值给方法参数 del obj.gname # 删除obj名字
@property
@gname.setter cute
@gname.deleter