zoukankan      html  css  js  c++  java
  • python set和get实现

    import math
    
    
    class Square:  # 正方形
    
        def __init__(self, l):
            self.length = l  # 边长
    
        def __setattr__(self, key, value):
            s = "调用__setattr__, key={}, value={}".format(
                key, value)
            print(s)
    
            if key == "length" and value > 0:
                self.__dict__["length"] = value
                self.__dict__["perimeter"] = value * 4
                self.__dict__["area"] = value ** 2
    
            if key == "perimeter" and value > 0:
                self.__dict__["length"] = value / 4
                self.__dict__["perimeter"] = value
                self.__dict__["area"] = (value / 4) ** 2
    
            if key == "area" and value > 0:
                self.__dict__["length"] = math.sqrt(value)
                self.__dict__["perimeter"] = math.sqrt(value) * 4
                self.__dict__["area"] = value
    
    
    sq = Square(10)
    print("length =", sq.length)
    print("perimeter =", sq.perimeter)
    print("area =", sq.area)
    print("-------")
    
    sq.perimeter = 12
    print("length =", sq.length)
    print("perimeter =", sq.perimeter)
    print("area =", sq.area)
    print("########")
    
    sq.area = 25
    print("length =", sq.length)
    print("perimeter =", sq.perimeter)
    print("area =", sq.area)
    
    # 执行结果
    调用__setattr__, key=length, value=10
    length = 10
    perimeter = 40
    area = 100
    -------
    调用__setattr__, key=perimeter, value=12
    length = 3.0
    perimeter = 12
    area = 9.0
    ########
    调用__setattr__, key=area, value=25
    length = 5.0
    perimeter = 20.0
    area = 25
  • 相关阅读:
    MySql常用命令
    PHP截断函数mb_substr()
    explode() 字符串转换数组
    php取得当前时间函数
    Apache与Nginx的比较
    thinkphp5.0环境变量配置
    thinkphp5.0配置作用域
    thinkphp5.0动态配置
    Mac 下查看 Android Studio 的 SHA1的方法
    Mac 下 gradle 路径
  • 原文地址:https://www.cnblogs.com/wwxbi/p/7751838.html
Copyright © 2011-2022 走看看