Python面向对象之属性

属性的定义和调用

1,定义时,在普通方法的基础上添加@property装饰器

2,定义时,属性仅有一个self参数

3,调用时,无需括号

vim day7-8.py

#!/usr/bin/python
# -*- coding:utf-8 -*-
class Pager():

    def __init__(self,current_page):
        self.current_page = current_page                        #代表第几页
        self.per_items = 10                                     #每页显示行数

    @property
    def start(self):                                            #开始的序号
        val = (self.current_page - 1) * self.per_items + 1
        return val


    @property
    def end(self):                                              #结束序号
        val = self.current_page * self.per_items
        return val

p = Pager(2)
print p.start
print p.end

使用以上方法可以根据页数取得需要查询的数据的序号开始和结束值

这里使用属性的方法是为了调用看起来更加合理

取消属性装饰器,调用的时候就要加()

所以以上代码和以下代码的效果的一样的

#!/usr/bin/python
# -*- coding:utf-8 -*-
class Pager():

    def __init__(self,current_page):
        self.current_page = current_page                        #代表第几页
        self.per_items = 10                                     #每页显示行数

 #   @property
    def start(self):                                            #开始的序号
        val = (self.current_page - 1) * self.per_items + 1
        return val


 #   @property
    def end(self):                                              #结束序号
        val = self.current_page * self.per_items
        return val

p = Pager(2)
print p.start()
print p.end()

PS:属性在编程时可能用不上,知道即可

  属性有两种表达方式一种是加property装饰器一种是使用property方法

 

对于新式类不仅仅支持property还支持

vim day7-9.py

#!/usr/bin/python
# -*- coding:utf-8 -*-
class Goods(object):

    @property
    def price(self):
        print '@property'

    @price.setter
    def price(self,value):
        print '@property.setter'

    @price.deleter
    def price(self):
        print '@property.deleter'


obj = Goods()

obj.price       #自动执行 @property修饰的price方法,并获取方法的返回值
obj.price = 123 #自动执行 @price.setter装饰的price方法,并将123赋值给方法
del obj.price   #自动执行 @price.deleter装饰的price方法
~                                                        

PS:知道即可,很少用

 

转载于:https://www.cnblogs.com/minseo/p/6903691.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值