写在前面,python中proprety在python中大量使用,尤其是在一些框架和网络大牛写的代码中,非常常见,所有学习proprety就非常必要了,废话不多说,直接上代码:

一.使用定义实例属性来使用

# 定义实例方法的方法来使用
class Test(object):# 可以定义参数def __init__(self, name="liming"):self.__age = 18if name == "liming":self.name = "liming"else:self.name = namedef getage(self):print("获取属性的时候调用")if self.name == 'likang':return self.__ageelse:print("%s这个用户不能访问当前的这个属性" % self.name)def setage(self, value):if self.name == 'lili':self.__age = valueelse:print("无权进行修改")def delage(self):del self.__ageprint("删除属性的时候调用")age = property(getage, setage, delage)if __name__ == '__main__':test = Test()test.age = 20

输出:

无权进行修改

第一种用法,定义实例方法,然后创建proprety的实例对象,注意:在定义三个方法的时候,setxxx,getxxx,delxxx中的”xxx”必须保持一致.proprety主要的是用来当一个对象要操作比较敏感属性的时候,可以对属性进行保护和对数据进行筛选,以免出现不期待的结果发生.

二.使用装饰器的方法来使用:

class Test(object):def __init__(self, name='liming'):self.__age = 18if name == 'liming':self.name = 'liming'else:self.name = name@propertydef age(self):if self.name == "liming":return self.__ageelse:print("%s无权访问该属性")@age.setterdef age(self, value):if self.name == "lili":self.__age = valueelse:print("无权修改该属性")@age.deleterdef age(self):del self.__agetest = Test()
test.age = 20

输出:

无权修改该属性
总结:使用proprety方法,可以保证数据被正确的访问和赋值,在访问数据的时候,可以对用户进行权限相关的验证等,从而保证了数据的稳定性.
最后,贴出proprety的部分源码:
  property(fget=None, fset=None, fdel=None, doc=None) -> property attributefget is a function to be used for getting an attribute value, and likewisefset is a function for setting, and fdel a function for del'ing, anattribute.  Typical use is to define a managed attribute x:class C(object):def getx(self): return self._xdef setx(self, value): self._x = valuedef delx(self): del self._xx = property(getx, setx, delx, "I'm the 'x' property.")Decorators make defining new properties or modifying existing ones easy:class C(object):@propertydef x(self):"I am the 'x' property."return self._x@x.setterdef x(self, value):self._x = value@x.deleterdef x(self):del self._x# (copied from class doc)

Python中proprety的使用技巧相关推荐

  1. 【笔记】效率之门——Python中的函数式编程技巧

    文章目录 Python函数式编程 1. 数据 2. 推导式 3. 函数式编程 3.1. Lambda函数 3.2. python内置函数 3.3. 高阶函数 4. 函数式编程的应用 Python函数式 ...

  2. 1.2.4 在Python中使用向量化的技巧和注意事项

    python中的广播 如图所示,对于python广播而言,就比如图中的第一个列向量和100相加,这时候100会自动扩充成一个列向量,同样的道理,其他的例子也是类似,横着扩或者竖着扩,总之是要完成相应的 ...

  3. Python中的实用小技巧,可以省下不是事情,喜欢记得收下

    话说python是一个大杂会,既可以用来做web,也可以用来做运维,还可以用来做数据科学(数据分析.数据挖掘.机器学习),正是因为这么庞大的功能,所以特意对一些小技巧进记录: 1.搜索指定目录下的文件 ...

  4. python 中 for使用小技巧

    1 testDict = {i: i * i for i in xrange(10)} 2 testSet = {i * 2 for i in xrange(10)} 3 4 print(testSe ...

  5. Python中循环(列表循环)的学习笔记~

    1 致谢 感谢菜鸟教程的帮助~ 链接如下: https://www.runoob.com/python/python-func-range.html 2 前言 今天在学习K-means++算法~ 3 ...

  6. 10个简单的hacker加速你在Python中的数据分析

    10个简单的hacker技术加速你在Python中的数据分析 来源 技巧和窍门,特别是在编程领域,可以非常有用.有时,一个小黑客既可以节省时间,也可以挽救生命.一个小的快捷方式或附加功能有时会被证明是 ...

  7. python中enum_Python如何实现enum

    什么是enum,为什么需要它? 枚举类型,也称为enum,是一种数据类型,由一组命名值组成.这些可枚举的命名值充当计算机语言中的常量.例如,COLOR枚举可以包括诸如RED, GREEN, BLUE等 ...

  8. chatgpt赋能python:如何在Python中取消换行?

    如何在Python中取消换行? 如果你是一名经验丰富的Python工程师,你一定会遇到在输出过程中需要取消换行的情况.在本文中,我将告诉你如何使用Python取消换行. 什么是换行? 在计算机编程中, ...

  9. Python中相见恨晚的技巧(记得收藏)

    话不多说,直接开干,攒了很久! 1. 交换变量值 这个应该比较简单,但是日常用很容易忽略. a, b = 5``, 10 print``(a, b) /``/``5``, 10 a, b = b, a ...

最新文章

  1. 全球大国人工智能实力大比拼与技术发展趋势
  2. 用xlg.tel来管理自己
  3. 地铁译:Spark for python developers --- 搭建Spark虚拟环境 4
  4. Jquery中发送ajax请求示例代码
  5. exp/expdp中query参数的使用
  6. PAT_B_1034_Java(20分)
  7. java 进阶 知乎_(二)零基础写Java知乎爬虫之进阶篇
  8. 初学Think PHP,数据库连接测试demo随笔
  9. 2021-08-16 WPF控件专题 StackPanel 控件详解
  10. 【Axure手机原型】手机产品的规划和设计
  11. Android MPush开源消息推送系统:简洁、安全、支持集群
  12. atan(y/x)与atan2(y,x)的区别
  13. 奇舞周刊第 424 期:Sketch 插件开发指南
  14. 我的 sfml 学习笔记
  15. VS:如何解决VS2015的30天试用期已过即VS2015许可证已过期的问题
  16. 打印0-100所有3的倍数的数字
  17. 无法启动此程序,因为计算机中丢失opencv_core*d.dll vs2010
  18. 水晶报表(Crystal Report)- 水晶报表常见问题总结
  19. PowerShell 设置文件只读 (设置文件属性)
  20. cpu和gpu已过时,npu和apu的时代开始

热门文章

  1. linux下程序占用内存只涨不降原因追查
  2. 联想云闯江湖,拿手的是这“一招一式”
  3. Laravel微信Native支付、微信jsapi支付
  4. 跟有些人的情谊,就剩下蚂蚁森林帮收能量了
  5. 修仙道轩辕仙剑java,第一卷 :仙剑世界中的黑化张四 089 仙道魔途
  6. Vegas如何保存项目工程文件?
  7. class com.cst.ump.dto.user.user.UserCardDto declares multiple JSON fields named ip
  8. CNN卷积神经网络(数字分类)
  9. 使用计算机VLOOKUP函数需注意什么,计算机中的vlookup函数怎么使用
  10. 乔布斯的中国门徒:黄章和雷军恩怨大起底