python内置函数property详解

python内置函数property详解在 Python 中 property 是一个内置函数 其实是一个 class 用于将方法转换为对象的属性 这使得我们像访问普通属性一样访问这些方法 property 函数接收四个参数 fget 用于获取属性值的函数 getter 方法

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

python内置函数property详解

Python中,property是一个内置函数(其实是一个class),用于将方法转换为对象的属性。这使得我们像访问普通属性一样访问这些方法。

python内置函数property详解

property函数接收四个参数:

  1. fget:用于获取属性值的函数(getter方法)。
  2. fset:用于设置属性值的函数(setter方法)。
  3. fdel:用于删除属性的函数(deleter方法)。
  4. doc:属性的文档字符串。

举例:定义一个汽车类,函数carbrand返回汽车品牌属性,函数carbrand_setter修改汽车品牌属性,函数carbran_deletter删除汽车品牌。

class Car(): persons = 5 def __init__(self,brand,color,cost_performance): self.brand = brand self.color = color self.cost_performance = cost_performance def carbrand(self): return self.brand def carbrand_setter(self, brand): self.brand = brand print(f'设置实例属性品牌为{self.brand}') def carbrand_deleter(self): print('不能删除实例属性') raise False #property()函数赋值给newbrand newbrand = property(carbrand, carbrand_setter, carbrand_deleter,'汽车品牌') 

最后通过proerty函数定义一个新的属性newbrand,传入上面的三个参数。

实例化后我们访问/修改/删除属性,看下结果如何?

Mercedes_Benz = Car('GLC260','black','不高')

获取属性

print(f'汽车品牌 :{Mercedes_Benz.newbrand}') #结果 汽车品牌 :GLC260


修改属性

Mercedes_Benz.newbrand = 'bmwx3' print(f'修改汽车品牌 :{Mercedes_Benz.newbrand}') #结果 修改汽车品牌 :bmwx3


删除属性

del Mercedes_Benz.newbrand #结果 不能删除实例属性

从结果中我们可以看出,当我们访问/修改/删除属性时,分别调用上面定义的三个函数,从而实现将类中的方法当作属性使用。

而日常使用过程中,函数property函数可以简化为@property装饰器,使用时会更简单,代码改为如下:

class Car(): persons = 5 def __init__(self,brand,color,cost_performance): self.brand = brand self.color = color self.cost_performance = cost_performance @property def carbrand(self): return self.brand @carbrand.setter def carbrand(self, brand): self.brand = brand print(f'设置实例属性品牌为{self.carbrand}') @carbrand.deleter def carbrand(self): print('不能删除实例属性') raise False

@carbrand.setter装饰器: 当对carbrand属性修改赋值时执行该函数

@carbrand.deleter装饰器:当对carbrand属性删除时执行该函数

Mercedes_Benz = Car('GLC260','black','不高') #获取属性 print(f'汽车品牌 :{Mercedes_Benz.carbrand}') #修改属性 Mercedes_Benz.carbrand = 'bmwx3' print(f'修改汽车品牌 :{Mercedes_Benz.carbrand}') #删除属性 del Mercedes_Benz.carbrand

以上代码执行后结果时一样的:

汽车品牌 :GLC260 设置实例属性品牌为bmwx3 修改汽车品牌 :bmwx3 不能删除实例属性 Traceback (most recent call last): File "/Users/htsc/Desktop/test 2.py", line 81, in <module> del Mercedes_Benz.carbrand File "/Users/htsc/Desktop/test 2.py", line 55, in carbrand raise False TypeError: exceptions must derive from BaseException

共勉: 东汉·班固《汉书·枚乘传》:“泰山之管穿石,单极之绠断干。水非石之钻,索非木之锯,渐靡使之然也。”

—–指水滴不断地滴,可以滴穿石头;

—–比喻坚持不懈,集细微的力量也能成就难能的功劳。

—-感谢读者的阅读和学习和关注,谢谢大家。

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

(0)
上一篇 2026-02-08 22:45
下一篇 2025-05-17 22:00

相关推荐

发表回复

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

关注微信