Python内置函数property()如何使用

作者:用户1214487 时间:2022-12-07 07:04:28 

代码


class Shuxing():
 def __init__(self, size = 10):
   self.size = size
 def getSize(self):
   print('getSize')
   return self.size
 def setSize(self, value):
   print('setSize')
   self.size = value
 def delSize(self):
   print('delSize')
   del self.size
 x = property(getSize, setSize, delSize)

sx=Shuxing(100)
print('1',sx.x)  #获取x,执行getSize方法
sx.x=1000   #设置x,执行setSize方法
print('2',sx.x)   #获取x,执行getSize方法
del sx.x  # 删除x,执行delSize方法

print('3',sx.size)   # 获取x,执行getSize方法,但是此时size已被删除,所以会报错

结果

getSize
1 100
Traceback (most recent call last):
setSize
getSize
File "D:/PycharmProjects/flask_demo/a.py", line 21, in <module>
2 1000
delSize
print('3',sx.size)
AttributeError: 'Shuxing' object has no attribute 'size'

Process finished with exit code 1

property()函数中的三个函数分别对应的是获取属性的方法、设置属性的方法以及删除属性的方法,这样一来,外部的对象就可以通过访问x的方式,来达到获取、设置或删除属性的目的。

当需要更改上例中的getSize、setSize或delSize函数的名称时,如果这些方法是作为接口让用户调用的,那么对用户而言就要修改自己调用的方法名,很麻烦,使用了proprty()后,用户就不需担心这种问题了。

更多关于属性的内置方法有:

  • hasattr():判断对象中是否有指定名称的属性,第一个参数是对象,第二个参数是字符串(属性名称);

  • getattr():获取对象中指定的属性的值,如果属性不存在,返回指定的提示字符串,第一个参数是对象,第二参数是字符串(属性名称),第三个参数是字符串(访问的属性不存在时的提示);

  • setattr():设置对象中指定的属性的值,如果属性不存在,就自动为对象添加该属性并赋值,第一个参数是对象,第二个参数字符串(属性名称),第三个参数是需要设置的属性对应的值;

  • delattr():删除对象中指定的属性,第一个参数是对象,第二个参数需要删除的指定属性的名称。

来源:https://cloud.tencent.com/developer/article/1028280

标签:Python,内置函数,property()
0
投稿

猜你喜欢

  • Python实现通讯录功能

    2022-06-28 22:33:26
  • python+flask编写接口实例详解

    2022-10-09 16:09:41
  • 2009年五一劳动节logo欣赏

    2009-05-02 18:26:00
  • 对Python3 * 和 ** 运算符详解

    2023-08-05 10:15:27
  • python如何实时获取tcpdump输出

    2021-05-05 14:41:36
  • Oracle数据库的备份与恢复

    2010-07-28 12:52:00
  • PHP的Socket网络编程入门指引

    2023-11-18 15:46:12
  • Java 数据库连接池Druid 的介绍

    2024-01-14 10:47:42
  • Python3中多线程编程的队列运作示例

    2022-06-15 23:27:49
  • XMLHTTP获取web造访头信息和网页代码

    2010-04-01 14:37:00
  • 基于Python创建语音识别控制系统

    2021-08-29 14:02:10
  • Python批量裁剪图片的思路详解

    2023-05-11 03:55:59
  • 什么是Python中的顺序表

    2021-07-12 22:17:47
  • MySQL 导入慢的解决方法

    2024-01-22 12:08:42
  • python利用高阶函数实现剪枝函数

    2022-04-17 11:21:44
  • mysql limit分页优化方法分享

    2024-01-26 22:03:40
  • 基于python的docx模块处理word和WPS的docx格式文件方式

    2021-11-13 12:07:55
  • 基于KL散度、JS散度以及交叉熵的对比

    2021-05-05 01:27:07
  • 使用Python构建Hopfield网络的教程

    2022-12-14 01:27:52
  • 嵌入式Web视频点播系统实现方法

    2007-10-10 21:17:00
  • asp之家 网络编程 m.aspxhome.com