Python面向对象类成员特性
特性的存在就是将方法伪装成字段。
property
把类方法当做普通字段去调用,即用对象调用的时候后面不用加括号
#!/usr/bin/env python# _*_coding:utf-8 _*_class Foo:@propertydef 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值@propertydef Characteristic(self):return "获取Characteristic值"# 意思是下面的Characteristic函数用来给上面的Characteristic函数设置值@Characteristic.setterdef 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:# 特殊字段@propertydef pp(self):# 调用特殊字段的时候输出aaaprint("property")@pp.setterdef pp(self, value):# 调用设置方法的时候输出value的值print(value)@pp.deleterdef pp(self):# 调用删除方法的时候输出delprint("deleter")# 创建一个对象objobj = Foo()# 自动执行@propertyobj.pp# 自动执行@pp.setterobj.pp = 999# 自动执行@pp.deleterdel obj.pp
输出
yangwen@Darker:~$ python3 /home/yangwen/文档/Python_code/sublime/Week07/s1.pyproperty999delete
另一种调用特殊属性的方法
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.pyf1f2f3我是注释
本文出自 “一盏烛光” 博客,谢绝转载!

免费 AI IDE


更多建议: