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
  • 相关阅读:
    K-Means++ 聚类之数据可视化:使用gnuplot
    QQ设计第1-5步
    QQ设计第1-5步
    为什么有很深的windows基础还是不能动摇linux半步
    常用命令
    在线会计_金蝶友商网
    XP使用VNC远程桌面CentOS 6
    Fatal error: Call to undefined function mb_substr()
    如何汉化 po 文件及编译成 mo 文件
    idoerp
  • 原文地址:https://www.cnblogs.com/wwxbi/p/7751838.html
Copyright © 2011-2022 走看看