print '--------------begin-MyProperty------------------'
# fget:获取属性
# fset:设置属性
# fdel:删除属性
# doc:属性含义
class MyProperty(object):
def __init__(self):
self._name = None
def setName(self, name):
self._name = name
def getName(self):
return self._name
def delName(self):
del self._name
name = property(getName, setName, delName, "I am Name Property")
a = MyProperty()
print MyProperty.name.__doc__
a.name = "Lily"
print a.name
try:
del a.name
print a.name
except Exception, e:
print e
print '--------------end-MyProperty------------------'
print '--------------begin-MyProperty2------------------'
class MyProperty2(object):
def __init__(self):
self._name = None
@property #必须写在另外两个方法前面
def name(self):#说明属性可读
return self._name
@name.setter #说明name属性可写
def name(self, name):
self._name = name
@name.deleter
def name(self):
del self._name
e
a = MyProperty2()
print MyProperty2.name.__doc__
a.name = "Lily"
print a.name
try:
del a.name
print a.name
except Exception, e:
print e
--------------begin-MyProperty------------------
I am Name Property
Lily
'MyProperty' object has no attribute '_name'
--------------end-MyProperty------------------
--------------begin-MyProperty2------------------
None
Lily
'MyProperty2' object has no attribute '_name'