python的builtin函数property其实很简单,其实就像java中bean的概念一样。可以控制类中变量的访问规则,property()函数实现的原理应该就是几天前写的__getattr__,__getattribute__等等函数有关。
有人回想,为什么python要控制变量的访问?难道实现不了private和protected么?变量命名是用两条下划线不能使变量private么?
很遗憾,不可以。两条下划线只是起到规范的作用,可能会报警,但是如果你愿意的话,还是可以无碍访问的。而且随着python版本变化搞不好以后这招还有可能不灵。所以我们需要property函数
class Propt(object):
def __init__(self):
self.__a2 = 'a2'
self._a1 = 'a1'
self.a = 'a'
self._field1 = 'field1'
@property
def field1(self):
print("field1 got")
return self._field1
@field1.setter
def field1(self, val):
print("field1 set")
self._field1 = val
p = Propt()
print(p.field1)
p.field1 = 'a'
输出结果是:
field1 got
field1
field1 set
真的是非常简单,如果你把函数field加上@property,那么_field1就是只读的,除非你再加上field1.setter。
有个小疑问是,变量名可不可以改成其它的?比如说abcdefg,而保持函数名不变?嗯,这是没问题的,只不过千万不要改成field这个名字,变量名和函数名重复的话会死循环的。
分享到:
相关推荐
主要介绍了python中@property和property函数常见使用方法,结合实例形式分析了Python @property和property函数功能、使用方法及相关操作注意事项,需要的朋友可以参考下
Python中属性的概念,property函数,对应文件:ClassElement4。文章:https://blog.csdn.net/yysyangyangyangshan/article/details/84455039
主要介绍了Python中property函数用法,结合实例形式分析了property函数的功能、参数、使用方法及相关操作注意事项,需要的朋友可以参考下
主要介绍了python基于property()函数定义属性,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
内置函数:python内嵌的一些函数。 匿名函数:一行代码实现一个函数功能。 递归函数 自定义函数:根据自己的需求,来进行定义函数。 (2)方法的分类: 普通方法:直接用self调用的方法。 私有方法:__函数名,只能...
主要介绍了Python内置函数property()如何使用,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下
在该类中定义三个函数,分别用作赋值、取值和删除变量(此处表达也许不很清晰,请看示例) def getx(self): return self.__x def setx(self,value): self.__x=value def delx(self): del self.__x x...
本文主要讲述的是对Python中property属性(特性)的理解,具体如下。 定义及作用: 在property类中,有三个成员方法和三个装饰器函数。 三个成员方法分别是:fget、fset、fdel,它们分别用来管理属性访问; 三个...
Python 内置函数 内置函数 abs() divmod() input() open() staticmethod() all() enumerate() int() ord() str() any() eval() isinstance() pow() sum() basestring() execfile()...
您可以使用@async_property ,你会与刚@property ,但异步函数。 class Foo : @ async_property async def remote_value ( self ): return await get_remote_value () 现在,属性remote_value返回一个等待的...
089.构造函数__init__ 090.实例属性_内存分析 091.实例方法_内存分析方法调用过程_dir()_isinstance 092.类对象 093.类属性_内存分析创建类和对象的底层 094.类方法_静态方法_内存分析图示 095.__del__()析构方法和...
memoized_property 一个简单的python装饰器,用于定义仅运行其fget函数一次的属性。 免费软件:BSD许可证什么? 仅一次调用其fget函数的Python属性。 您编写了多少次此代码(或类似代码)? def class C(object): @...
这篇文章主要介绍了通过实例了解python property属性,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1. 什么是property属性 一种用起来像是使用的实例属性...
本文实例讲述了Python 类,property属性(简化属性的操作),@property,property()用法。分享给大家供大家参考,具体如下: property属性的创建方式有两种:1.@property装饰器方式 2.类属性方式 ( 类属性=property...
├─千锋Python教程:第06章 函数与高阶函数(7集)) │ │ .DS_Store │ │ │ ├─code │ │ 10、函数也是一种数据.py │ │ 11、匿名函数.py │ │ 12、map&reduce;.py │ │ 13、filter.py │ │ 14、sorted....
本文实例讲述了Python高级property属性用法。分享给大家供大家参考,具体如下: property属性 1.property属性: 是一个提高开发者用户体验度的属性,可以将一个函数改造的像属性一样。 例: # 定义的时候像是一个...
主要介绍了Python列表list常用内建函数,结合实例形式总结分析了Python列表list常见内建函数的功能、使用方法及相关操作注意事项,需要的朋友可以参考下