属性

  • property()
经过property()建立属性,格式以下
property(fget,fset,fdel,doc)
#只有fget参数,产生的属性是只读的
#(可选)fdel参数:用于删除特性的方法(它不须要参数)
#(可选)doc参数:文档字符串
#若是property()没有参数,产生的属性既不可读,也不可写
比较访问器方法和property()函数
#使用访问器方法获取属性
class Rectangle:
    def __init__(self):
         self.width = 0
         self.height = 0

    def setSize(self,size):
#    self.width = size
#    self.height = size
        self.width,self.height = size   #注意也能够这样写

    def getSize(self):
        return self.width,self.height

r = Rectangle()
r.height =8
r.width = 9
print r.getSize()  #输出(9, 8)
r.setSize((16,18))
print r.width      #输出 16

    

#使用 property()
__metaclass__ = type  #定义为新式类,要在新式类中使用 property()
class Rectangle:
    def __init__(self):
         self.width = 0
         self.height = 0

    def setSize(self,size):
#    self.width = size
#    self.height = size
        self.width,self.height = size   #注意也能够这样写

    def getSize(self):
        return self.width,self.height

    size = property(getSize,setSize)  # property建立属性,其中访问器被用做参数(先取值,后赋值)


r = Rectangle()
r.height =8
r.width = 9
print r.size     #输出(9,8)
r.size = 16,18
print r.width    #输出 16
相关文章
相关标签/搜索