zoukankan      html  css  js  c++  java
  • 创建可管理的对象属性

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

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

  • 相关阅读:
    AcRxClass::addX
    string.format("%s",name)
    strcmp 与 _tcscmp
    acedinitget
    判断实体的类型 相关操作
    accmcolor
    CAD类型转换
    图的存储结构及遍历
    并查集(Union/Find)
    设计模式--缺醒适配器模式
  • 原文地址:https://www.cnblogs.com/Andy963/p/7103034.html
Copyright © 2011-2022 走看看