zoukankan      html  css  js  c++  java
  • 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:知道即可,很少用

  • 相关阅读:
    WUSTOJ 1247: 递增或递减排序(Java)
    WUSTOJ 1246: 字符串排序(Java)
    Oracle查询部门工资最高员工的两种方法 1、MAX()函数 2、RANK()函数
    Oracle数据库——用户(USER)
    Firefox在新标签页打开“书签”和“搜索栏”(无需插件)
    Oracle数据库——ROWNUM
    Oracle数据库 SET ECHO [ON|OFF]
    WUST Oracle数据库 实验一实验二
    优课在线 嵌入式系统(胡威)2018春季测验 参考解析
    Oracle数据库——查询所有用户
  • 原文地址:https://www.cnblogs.com/minseo/p/6903691.html
Copyright © 2011-2022 走看看