首页 > 代码库 > [读书]Python学习手册--属性管理1
[读书]Python学习手册--属性管理1
属性管理-特性
一般开发这不必关心属性的实现,对工具的构建这来说,了解这一块对API的灵活性有帮助。
大多数情况下,属性位于对象自身之中,或者继承自对象所派生自的一个类。 ----python学习手册
property
property(fget=None, fset=None, fdel=None, doc=None) -> property attribute
fget 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, an attribute.
可以使用函数的方式也可以使用装饰器的方式来使用
#!/usr/bin/env python # -*- coding: utf-8 -*- #python2.7x #property.py @2014-07-26 #author: orangleliu class Person(object): def __init__(self, name): self._name = name def getName(self): print 'fetch....' return self._name def setName(self, value): print 'change...' self._name = value def delName(self): print 'remove....' del self._name #也可以使用装饰器的方式 name = property(getName, setName, delName, "name property docs") bob = Person('Bob') print bob.name print Person.name.__doc__ bob.name = 'bob' print bob.name del bob.name #print bob.name ''' 并没有想象中的那么好使 #类没有继承object的情况下 fetch.... Bob name property docs bob set del 就没有使用啊 #类继承object的情况下 Bob name property docs change... fetch.... bob remove.... '''
书中的例子并没有继承object, 使用2.7的版本和书中结果不一致。 需要继承object才能达到预期的结果
添加属性的默认操作
这里使用装饰的方式, 只要value赋值就进行一个默认的操作,可以看到我们使用属性的方式就可以默认调用函数来处理属性。g.value 而不是 g.valueXX()
#!/usr/bin/env python # -*- coding: utf-8 -*- #python2.7x #property.py @2014-07-26 #author: orangleliu class GetSquare(object): def __init__(self, num): self.value = http://www.mamicode.com/num>其实这种方式很类似于javabean中的方式。
[读书]Python学习手册--属性管理1
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。