日常送分,property函数和@property
这两个功能实现上是一样的,在使用上怎么选择?随便选吗?看心情? Python使用property函数和使用@property装饰器都能定义属性的get、set及delete的访问方法,他们的相同点主要如下三点:1、定义这些方法后,代码中对相关属性的访问实际上都会触发这些定义的方法,从而实现应用代码用简单方法访问属性,但实际属性的访问逻辑由背后定义的方法控制,本质上二者的功效是相同的;
2、二者在定义方法上,都支持可以选择性的设置其中的一个、两个或三个操作类型;
3、定义的属性都必须是新增的属性,最好不能与类已有的实例变量同名,如果同名,该属性会覆盖原有实例变量,即原有实例变量不再有效,特别是不能与需要映射到具体实例变量同名(映射是指定义属性最终需要操作的某实例变量),否则会触发无限地递归调用。
不同点如下:
1、property函数是先定义属性操作方法,再通过property函数将操作方法与属性绑定;而@property装饰器则是直接定义操作方法,三个操作方法的名字都是属性名,只是装饰器有区别;
2、property函数定义的操作方法get、set及delete任选其一都可以,没有的方法就不能执行对应属性的访问,而@property中get方法是必选的;
3、property函数定义时还能指定对象的说明文档字符串,而@property中没有对应方法。
————————————————
原文链接:https://blog.csdn.net/LaoYuanPython/article/details/94639638
static/image/hrline/1.gif
如果帮到你了,设置下最佳可好呀↗{:10_297:} 这俩是一个东西。 Hello. 发表于 2020-7-15 13:23
如果帮到你了,设置下最佳可好呀↗
3、property函数定义时还能指定对象的说明文档字符串,而@property中没有对应方法。错误。 永恒的蓝色梦想 发表于 2020-7-15 13:41
这俩是一个东西。
我知道是一个东西,就是在使用选择上怎么选,看心情么?
白白白白丶白 发表于 2020-7-15 13:44
我知道是一个东西,就是在使用选择上怎么选,看心情么?
一般都是以装饰器的形式使用的。 永恒的蓝色梦想 发表于 2020-7-15 13:45
一般都是以装饰器的形式使用的。
学习到了,谢谢
页:
[1]