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

  • 相关阅读:
    mysql数据库基础知识
    js与jquery操作
    4月16日的错题整理
    智还王项目中出现的问题和使用的一些方法
    dom操作
    二维数组的定义与用法
    数组内容
    网页布局时遇到的问题
    css初接触
    表单
  • 原文地址:https://www.cnblogs.com/Andy963/p/7103034.html
Copyright © 2011-2022 走看看