专栏首页米扑专栏Python 学习入门(36)—— @property属性

Python 学习入门(36)—— @property属性

@property 可以将python定义的函数“当做”属性访问,从而提供更加友好访问方式,但是有时候setter/getter也是需要的

假设定义了一个类Cls,该类必须继承自object类,有一私有变量__x

1. 第一种使用属性的方法:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# blog.ithomer.net

class Cls(object):
    def __init__(self):
        self.__x = None
    
    def getx(self):
        return self.__x
    
    def setx(self, value):
        self.__x = value
        
    def delx(self):
        del self.__x
        
    x = property(getx, setx, delx, 'set x property')

if __name__ == '__main__':
    c = Cls()
    c.x = 100
    y = c.x
    print("set & get y: %d" % y)
    
    del c.x
    print("del c.x & y: %d" % y)   

运行结果:

set & get y: 100 del c.x & y: 100

在该类中定义三个函数,分别用作赋值、取值、删除变量

property函数原型为property(fget=None,fset=None,fdel=None,doc=None),上例根据自己定义相应的函数赋值即可。

2. 第二种方法(在2.6中新增) 同方法一,首先定义一个类Cls,该类必须继承自object类,有一私有变量__x

class Cls(object):
    def __init__(self):
        self.__x = None
        
    @property
    def x(self):
        return self.__x
    
    @x.setter
    def x(self, value):
        self.__x = value
        
    @x.deleter
    def x(self):
        del self.__x

if __name__ == '__main__':
    c = Cls()
    c.x = 100
    y = c.x
    print("set & get y: %d" % y)
    
    del c.x
    print("del c.x & y: %d" % y) 

运行结果: set & get y: 100 del c.x & y: 100 说明: 同一属性__x的三个函数名要相同。

参考推荐:

python Property属性用法

python学习笔记 - @property

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python自动单元测试实例

    [work@db-testing-com06-vm3.db01.baidu.com test]$ python widget_unittest.py .. -...

    阳光岛主
  • Python类继承简单实现

    [work@db-testing-com06-vm3.db01.baidu.com python]$ python inherit.py init Schoo...

    阳光岛主
  • Python scrapy 安装与开发

    Scrapy是采用Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取采集web站点信息并从页面中提取结构化的数据。

    阳光岛主
  • 属性访问

    通常可以通过点(.)操作符的形式去访问对象的属性,关于属性的访问,也有相应的魔法方法来管理,

    天钧
  • 由python端口转发脚本看asyncore模块

    asyncore, 端口转发, ...

    phith0n
  • 【项目实践】中英文文字检测与识别项目(CTPN+CRNN+CTC Loss原理讲解)

    文字识别也是图像领域一个常见问题。然而,对于自然场景图像,首先要定位图像中的文字位置,然后才能进行文字的识别。

    OpenCV学堂
  • Python实现堆栈

    堆栈是一个后进先出的数据结构,其工作方式就像一堆汽车排队进去一个死胡同里面,最先进去的一定是最后出来。

    一墨编程学习
  • Mechanize实战二:获取音悦台公告

    有些网站或论坛为了防止暴力破解,在登录框设置了一个验证码,目前针对验证码的解决方案可谓是千奇百怪,考虑到爬虫所需要的只是数据,完全可以绕过验证码,直接使用COO...

    py3study
  • python3 函数迭代器

    迭代器协议,是指对象(实例)能够使用next函数获取下一项数据,在没有下一项数据之前触发一个StopIteration异常来终止迭代

    py3study
  • 散列表结构 字典与集合

    散列表(Hash Table)结构是字典(Dictionary)和集合(Set)的一种实现方式。散列算法的作用是尽可能快地在数据结构中找到一个值。在散列表上插入...

    py3study

扫码关注云+社区

领取腾讯云代金券