可以利用property来为类灵活定义属性
property 原型如下:
class C(object): ... attrib = property(fget=None, fset=None, fdel=None, doc=None) o = C()
执行o.attrib,则调用fget指定的函数;
执行o.attrib= value 则调用fset函数;
执行del o.attrib 则调用fdel函数了
doc 为所定义的属性指定docstring
显然如果不设置fset参数则此此属性成为名符其实的只读属性
如下为一个典型的使用示例(节选自Django框架中某处源码)