@property可以将python定义的函数“当做”属性访问,从而提供更加友好访问方式,但是有时候setter/deleter也是需要的。
1》只有@property表示 只读。
2》同时有@property和@x.setter表示 可读可写。
3》同时有@property和@x.setter和@x.deleter表示可读可写可删除。
加了@property后,可以用调用属性的形式来调用方法,后面不需要加()。
方法加入@property后,这个方法相当于一个属性,这个属性可以让用户进行使用,而且用户有没办法随意修改。
————————————————
class Test(object):
def __init__(self):
self.__name =None
# 下面开始定义属性,3个函数的名字要一样!
@property # 可读 实际应用中 比如数据库 创建连接
def name(self):
return self.__name
@name.setter # 可写 实际应用中 比如 数据库插入
def name(self, value):
self.__name = value
@name.deleter # 可删除 实际应用中 比如做一些数据库 提交 关闭 释放连接等操作
def name(self):
self.__name =None
@property # 可读 实际应用中 比如数据库查询
def get_name(self):
return self.__name
if __name__ =="__main__":
print(1)
a = Test()
print(a.name)# 读
a.name ='python' # 写
print(a.name)# 读
print(a.get_name)# 读
del a.name# 删除
print(a.name)
参考:
https://zhuanlan.zhihu.com/p/64487092
https://blog.csdn.net/sxingming/article/details/52916249
网友评论