码迷,mamicode.com
首页 > 其他好文 > 详细

创建可管理的对象属性

时间:2017-07-01 19:31:05      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:odi   pytho   type   __init__   实现   val   设置   logs   turn   

下面先创建一个计算面积的类:

#!/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调用,来实现对  对象属性的 管理

 

创建可管理的对象属性

标签:odi   pytho   type   __init__   实现   val   设置   logs   turn   

原文地址:http://www.cnblogs.com/Andy963/p/7103034.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!