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

  • 相关阅读:
    WebSocket简单通信
    python必会内置函数
    python装饰器
    Python常用模块1
    python函数操作
    python字典操作
    python切片操作
    python列表操作
    python字符串格式化的几种方式
    Jmeter响应中中文乱码怎么解决?
  • 原文地址:https://www.cnblogs.com/Andy963/p/7103034.html
Copyright © 2011-2022 走看看