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
  • 相关阅读:
    ASM ClassReader failed to parse class file- probably due to a new Java class file version that isn't supported yet问题
    Git配置工作
    Git多人协作
    Git分支合并
    网络收藏夹
    莫道桑榆晚,为霞尚满天
    2021幼升小
    2020年07月28日10:36:36
    JAVA中如果用BigDecimal做除法
    mybatis
  • 原文地址:https://www.cnblogs.com/wwxbi/p/7751838.html
Copyright © 2011-2022 走看看