1、什么是property属性
一种用起来像是使用的实例属性一样的特殊属性,可以对应于某个方法
# ############# 定义 ##############
class Foo:
def fun(self):
pass
# 定义property属性,必须返回一个值
@property
def prop(self):
return 100
# ############# 调用 ################
foo_obj = Foo()
foo_obj.fun() # 调用实例方法
print(foo_obj.prop) # 调用属性
property属性的定义和调用要注意以下几点:
- 定义时,在实例方法的基础上添加
@property
装饰器,并且仅有self
一个参数 - 调用时,无需括号
方法: foo_obj.func()
property属性:foo_obj.prop
2、简单的实例
对于京东商城中显示电脑主机的列表页面,每次请求不可能把数据库中的所有内容都显示到页面上,而是通过分页的功能局部显示,所以在向数据库中请求数据时就要显示的指定获取从第m条到第n条的所有数据,这个分页的功能包括:
- 根据用户请求的当前页和总数据条数计算出m和n
- 根据m和n去数据库中请求数据
class Pager:
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(