Python中property属性实例解析

 更新时间:2018年02月10日 14:12:56   作者:ITxiaoke  
这篇文章主要介绍了Python中property属性实例解析,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下

本文主要讲述的是对Python中property属性(特性)的理解,具体如下。

定义及作用:

在property类中,有三个成员方法和三个装饰器函数。
三个成员方法分别是:fget、fset、fdel,它们分别用来管理属性访问;
三个装饰器函数分别是:getter、setter、deleter,它们分别用来把三个同名的类方法装饰成property。
fget方法用来管理类实例属性的获取,fset方法用来管理类实例属性的赋值,fdel方法用来管理类实例属性的删除;
getter装饰器把一个自定义类方法装饰成fget操作,setter装饰器把一个自定义类方法装饰成fset操作,deleter装饰器把一个自定义类方法装饰成fdel操作。
只要在获取自定义类实例的属性时就会自动调用fget成员方法,给自定义类实例的属性赋值时就会自动调用fset成员方法,在删除自定义类实例的属性时就会自动调用fdel成员方法。

下面从三个方面加以说明

Num01–>原始的getter和setter方法,获取私有属性值

# 定义一个钱的类
class Money(object):
  def __init__(self):
    self._money = 0

  def getmoney(self):
    return self._money

  def setmoney(self, value):
    if isinstance(value, int):
      self._money = value
    else:
      print("error:不是整型数字")


money = Money()
print(money.getmoney())
# 结果是:0
print("====修改钱的大小值====")
money.setmoney(100)
print(money.getmoney())
# 结果是:100

Num02–>使用property升级getter和setter方法

# 定义一个钱的类
class Money(object):
  def __init__(self):
    self._money = 0

  def getmoney(self):
    return self._money

  def setmoney(self, value):
    if isinstance(value, int):
      self._money = value
    else:
      print("error:不是整型数字")

  money = property(getmoney, setmoney)

money = Money()
print(money.getmoney())
# 结果是:0
print("====修改钱的大小值====")
money.setmoney(100)
print(money.getmoney())
# 结果是:100

#最后特别需要注意一点:实际钱的值是存在私有便令__money中。而属性money是一个property对象,
是用来为这个私有变量__money提供接口的。

#如果二者的名字相同,那么就会出现递归调用,最终报错。

Num03–>使用property取代getter和setter

@property成为属性函数,可以对属性赋值时做必要的检查,并保证代码的清晰短小

# 定义一个钱的类
class Money(object):
  def __init__(self):
    self._money = 0

  @property
  # 注意使用@property装饰器对money函数进行装饰,就会自动生成一个money属性,
当调用获取money的值时,就调用该函数
  def money(self):
    return self._money

  @money.setter
  # 使用生成的money属性,调用@money.setter装饰器,设置money的值
  def money(self, value):
    if isinstance(value, int):
      self._money = value
    else:
      print("error:不是整型数字")

aa = Money()
print(aa.money)
# 结果是:0
print("====修改钱的大小值====")
aa.money = 100
print(aa.money)
# 结果是:100

总结

以上就是本文关于Python中property属性实例解析的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

相关文章

  • Python基于plotly模块实现的画图操作示例

    Python基于plotly模块实现的画图操作示例

    这篇文章主要介绍了Python基于plotly模块实现的画图操作,涉及Python基于plotly模块的数值运算与图形操作相关实现技巧,需要的朋友可以参考下
    2019-01-01
  • Python语言基础之函数语法

    Python语言基础之函数语法

    这篇文章主要介绍了Python语言基础中的函数语法,文中有详细的代码示例供大家参考,对学习或工作有一定的帮助,需要的朋友可以参考阅读下
    2023-05-05
  • Anaconda修改默认虚拟环境安装位置的方案分享

    Anaconda修改默认虚拟环境安装位置的方案分享

    新安装Anaconda后,在创建环境时环境自动安装在C盘,但是C盘空间有限,下面这篇文章主要给大家介绍了关于Anaconda修改默认虚拟环境安装位置的相关资料,需要的朋友可以参考下
    2023-01-01
  • 使用pandas read_table读取csv文件的方法

    使用pandas read_table读取csv文件的方法

    今天小编就为大家分享一篇使用pandas read_table读取csv文件的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • python递归全排列实现方法

    python递归全排列实现方法

    这篇文章主要为大家详细介绍了python递归全排列实现方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • Python实现轻松找出两个列表不同之处

    Python实现轻松找出两个列表不同之处

    在日常编程中,需要比较两个列表并找出它们之间差异是一种常见需求,在本文中,我们将深入探讨Python中查找两个列表差异值的方法,需要的小伙伴可以参考下
    2023-12-12
  • 用Python爬取某乎手机APP数据

    用Python爬取某乎手机APP数据

    最近爬取的数据都是网页端,今天来教大家如何爬取手机端app数据(本文以ios苹果手机为例,其实安卓跟ios差不多)! 本文将以『某乎』为实战案例,手把手教你从配置到代码一步一步的爬取App数据,需要的朋友可以参考下
    2021-06-06
  • 用60行代码实现Python自动抢微信红包

    用60行代码实现Python自动抢微信红包

    这篇文章主要介绍了用60行代码实现Python自动抢微信红包,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • Python制作Windows按键通知脚本

    Python制作Windows按键通知脚本

    对于键盘没有背光灯的同学而言,切换大小写或控制Num键开关的时候没有提示,经常需要试探性地输入一些字符来判断开关是否打开,体验非常糟糕。所以本文就来用Python做一个Windows按键通知脚本,需要的可以参考一下
    2022-11-11
  • Python Docx库完美操作word文档实例探究

    Python Docx库完美操作word文档实例探究

    这篇文章主要为大家介绍了Python Docx库完美操作word文档,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01

最新评论