下面先创建一个计算面积的类:
#!/usr/bin/env python
#coding:utf-8
#Created by Andy @ 2017/7/1
from math import pi
class Circle:
def __init__(self, radius):
self.radius = radius
def get_radius(self):
return self.radius
def set_radius(self, value):
if not isinstance(value, (int, float)):
raise ValueError("Wrong type!")
self.radius = float(value)
def get_area(self):
return self.radius ** 2 * pi
这样,如果我需要得到某个实例的半径,或者面积,需要这样做:
c = Circle(3) print(c.get_radius())
但是,有没有更简单的办法呢?
#!/usr/bin/env python
#coding:utf-8
#Created by Andy @ 2017/7/1
from math import pi
class Circle:
def __init__(self, radius):
self.radius = radius
def get_radius(self):
return self.radius
def set_radius(self, value):
if not isinstance(value, (int, float)):
raise ValueError("Wrong type!")
self.radius = float(value)
def get_area(self):
return self.radius ** 2 * pi
r = property(get_radius, set_radius)
c = Circle(3)
print(c.r)
c.r = 5
print(c.r, c.get_radius())
当然这里property 可以分别设置:
fget fset fdel
这里只需要设置前面的get, 及set方法,所以只写了前两个。
可以看到,经过property的使用,我们可能直接通过对r调用,来实现对 对象属性的 管理
原文:http://www.cnblogs.com/Andy963/p/7103034.html