首页 > 其他 > 详细

如何创建可管理的对象属性?

时间:2020-07-22 23:38:24      阅读:78      评论:0      收藏:0      [点我收藏+]

需求:
在面向对象的编程中,我们把方法(函数)看作对象的接口,直接访问对象的属性可能是不安全的,或设计上不够灵活。但是使用调用方法在形式上不如访问属性简洁。
circle.getRadius()
circle.setRadius(5.0) # 繁

circle.radius
circle.radius = 5.0 # 简

能否在形式上是属性的访问,但是实际调用方法?

思路:
使用property函数为类创建可管理属性,fget/fset/fdel对相应属性访问

代码:

from math import pi

class Circle(object):
    def __init__(self,radius):
        self.radius = radius

    def getRadius(self):
        return self.radius

    def setRadius(self,value):
        if not isinstance(value,(int,float)):
            raise ValueError(‘wrong type‘)
        self.radius = float(value)

    def getArea(self):
        return self.radius ** 2 * pi

    R = property(getRadius, setRadius) # 第一个参数为c.R的时候调用的方法,第二个参数为c.R=xxx时调用的方法

c = Circle(3.2)
print(c.R)
c.R = ‘abc‘
print(c.R)

如何创建可管理的对象属性?

原文:https://www.cnblogs.com/Richardo-M-Q/p/13363434.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!