Python中的property属性

Python中的property属性大家好 我是大爆炸在介绍 property 前先介绍 property property 构造函数返回 property 属性

大家好,欢迎来到IT知识分享网。

大家好,我是大爆炸

在介绍@property前先介绍property()。

property()构造函数返回property属性。其语法是:

property(fget=None, fset=None, fdel=None, doc=None) 

property()参数:

  1. fget (optional) – 用于获取属性值,默认为None。
  2. fset (optional) – 用于设置属性值,默认为None。
  3. fdel (optional) – 用于删除属性值。默认为None。
  4. doc (optional) – 包含该属性的文档(docstring)的字符串。默认为None。

property()返回值:

property()从给定的getter、setter和deleter返回property属性。

  1. 如果没有给出参数,property()返回一个不包含任何getter、setter或deleter的基属性属性。
  2. 如果没有提供doc,property()接受getter函数的文档字符串。

示例1:使用getter、setter和deleter创建属性

class Person: def __init__(self, name): self._name = name def get_name(self): print('Getting name') return self._name def set_name(self, value): print('Setting name to ' + value) self._name = value def del_name(self): print('Deleting name') del self._name # Set property to use get_name, set_name # and del_name methods name = property(get_name, set_name, del_name, 'Name property') p = Person('Adam') print(p.name) p.name = 'John' del p.name 

结果:

Getting name The name is: Adam Setting name to John Deleting name 

这里,_name被用作私有变量,用于存储Person的名称。

我们还设置:

  1. getter方法get_name()来获取人员的姓名,
  2. setter方法set_name()来设置人员的姓名,
  3. deleter方法del_name()来删除人员的姓名。

通过调用property()方法来设置一个新的属性name

如程序所示,内部引用p.name调用get_name()作为getter, set_name()作为setter, del_name()作为deleter,通过方法内部的打印输出。

示例2:使用@property装饰器

可以使用Python装饰器@property来分配getter、setter和deleter,而不是使用property()。

class Person: def __init__(self, name): self._name = name @property def name(self): print('Getting name') return self._name @name.setter def name(self, value): print('Setting name to ' + value) self._name = value @name.deleter def name(self): print('Deleting name') del self._name p = Person('Adam') print('The name is:', p.name) p.name = 'John' del p.name 

输出:

Getting name The name is: Adam Setting name to John Deleting name 

这里使用了@property装饰器,而不是property()

  1. 首先,指定name()方法也是Person的一个属性。这是通过在getter方法之前使用@property来实现的。
  2. 接下来,使用属性名来指定setter和deleter。这是通过使用@name完成的。@name.setter用于setter方法,@name.deleter用于deleter方法。

在定义getter、setter和deleter时,使用了相同的方法name()。现在,无论何时使用 p.name,它都会在内部调用相应的getter、setter和deleter。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/108374.html

(0)
上一篇 2026-02-07 09:00
下一篇 2024-03-08 11:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信