您的位置:首页 > 编程语言 > Python开发

Python面向对象类成员特性

2017-04-24 08:16 169 查看
特性的存在就是将方法伪装成字段。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


我是注释
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Python 杨文