设为首页 收藏本站
查看: 1517|回复: 0

[经验分享] Python面向对象类成员特性

[复制链接]

尚未签到

发表于 2018-8-12 11:11:00 | 显示全部楼层 |阅读模式
  特性的存在就是将方法伪装成字段。
  property
  把类方法当做普通字段去调用,即用对象调用的时候后面不用加括号

  •   #!/usr/bin/env python
  •   # _*_coding:utf-8 _*_
  •   
  •   class Foo:
  •   
  •       @property
  •       def Characteristic(self):
  •           print("类方法的特性")
  •   
  •   # 创建一个对象
  •   obj = Foo()
  •   # 调用类方法的时候方法后面不用加括号
  •   obj.Characteristic
  输出

  •   /usr/bin/python3.5 /home/yangwen/文档/Python_code/sublime/Week06/Day04/s2.py
  •   类方法的特性
  •   
  •   Process finished with exit code 0
  setter
  设置类方法的值

  •   #!/usr/bin/env python
  •   # _*_coding:utf-8 _*_
  •   
  •   class Foo:
  •   
  •       # 获取Characteristic值
  •       @property
  •       def Characteristic(self):
  •           return "获取Characteristic值"
  •   
  •       # 意思是下面的Characteristic函数用来给上面的Characteristic函数设置值
  •       @Characteristic.setter
  •       def Characteristic(self, value):
  •           return "设置Characteristic的值"
  •   
  •   # 创建一个对象
  •   obj = Foo()
  •   
  •   # 获取Characteristic的值
  •   print(obj.Characteristic)
  •   
  •   # 设置Characteristic的值
  •   obj.Characteristic = 123
  输出

  •   /usr/bin/python3.5 /home/yangwen/文档/Python_code/sublime/Week06/Day04/s2.py
  •   获取Characteristic值
  •   
  •   Process finished with exit code 0
  deleter

  •   class Foo:
  •   
  •       # 特殊字段
  •       @property
  •       def pp(self):
  •           # 调用特殊字段的时候输出aaa
  •           print("property")
  •   
  •       @pp.setter
  •       def pp(self, value):
  •           # 调用设置方法的时候输出value的值
  •           print(value)
  •   
  •       @pp.deleter
  •       def pp(self):
  •           # 调用删除方法的时候输出del
  •           print("deleter")
  •   
  •   # 创建一个对象obj
  •   obj = Foo()
  •   
  •   # 自动执行@property
  •   obj.pp
  •   
  •   # 自动执行@pp.setter
  •   obj.pp = 999
  •   
  •   # 自动执行@pp.deleter
  •   del obj.pp
  输出

  •   yangwen@Darker:~$ python3 /home/yangwen/文档/Python_code/sublime/Week07/s1.py
  •   property
  •   999
  •   delete
      
      
另一种调用特殊属性的方法

  •   class Foo:
  •   
  •       def f1(self):
  •           print("f1")
  •   
  •       def f2(self, value):
  •           print("f2")
  •   
  •       def f3(self):
  •           print("f3")
  •   
  •       SpecialFields = property(fget=f1, fset=f2, fdel=f3, doc="我是注释")
  •   
  •   # 创建一个对象
  •   obj = Foo()
  •   
  •   # 调用类的f1方法
  •   obj.SpecialFields
  •   
  •   # 调用类的f2方法
  •   obj.SpecialFields = 123
  •   
  •   # 调用类的发方法
  •   del obj.SpecialFields
  •   
  •   # 调用类的doc,这里只能通过类去访问,对象无法访问
  •   print(Foo.SpecialFields.__doc__)
  输出结果

  •   yangwen@Darker:~$ python3 /home/yangwen/文档/Python_code/sublime/Week07/s1.py
  •   f1
  •   f2
  •   f3
  •   我是注释

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-550557-1-1.html 上篇帖子: 3Python全栈之路系列之D-Eden 下篇帖子: Python面向对象成员修饰符
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表