1 # 特性Property 2 class Rectangle: 3 def __init__(self): 4 self.width = 0 5 self.height = 0 6 7 def set_size(self,size): 8 self.width, self.height = size 9 10 def get_size(self,size): 11 return self.width, self.height 12 13 # 注意:获取方法在前,设置方法在后 14 size = property(get_size,set_size)
通过调用函数property并将存取方法作为参数(获取方法在前,设置方法在后)创建一个特性,然后将名称size关联到这个特性。
这样,就能以同样的方式对待width、height和size,而无需关心它们是如何实现的。
1 r = Rectangle() 2 r.width = 10 3 r.height = 5 4 print(r.size) 5 6 r.size = 150,100 7 print(r.width, r.height)
输出:
(10, 5)
150 100
实际上,调用函数property时,还可不指定参数、指定一个参数、指定三个参数或指定四个参数。
参数名分别为:fget fset fdel doc
(1)没有指定任何参数:
创建的特性将既不可读也不可写;
(2)只指定一个参数(获取方法get):
创建的特性将是只读的;
(3)第三个参数是可选的:
指定用于删除属性的方法(这个方法将不接受任何参数);
(4)第四个参数是可选的:
指定一个文档字符串