zoukankan      html  css  js  c++  java
  • property

    property

    1.什么是property?

      是一个python内置的装饰器,可以装饰在“类内部的方法”上。

      可以将该方法调用方式有----->对象.方法()----->对象.方法

    2.为什么用property?

      ps:在某些场景下,调用的方法知识用来获取计算后的某种值。

      ps:必须通过 对象.方法()方式调用,让该方法看起来像动词

     

      让名词的方法,调用时更为合理。

      目的是为了迷惑调用者,调用的方法误以为是属性

    3.如何用?

    # 需求: 计算人体 bmi 指数
    # 体重 / 身高的平方
    # value = weight / (height * height)
    class User:
        def __init__(self, name, weight, height):
            self.__name = name
            self.weight = weight
            self.height = height
    
        # 获取bmi指数方法
        @property
        def bmi(self):
            # return self.weight / (self.height * self.height)
            return self.weight / (self.height ** 2)
    
    
        @property
        def name(self):
            return self.__name
    
        # 了解: 设置被property装饰后的方法
        # 注意: 需要修改的方法名字要与被property装饰器后的方法一样
        @name.setter
        def name(self, value):  # '赵shuai兵' --- 》 value
            self.__name = value
    
        @name.deleter
        def name(self):  # 删除属性
            del self.__name
    
    
    user_obj = User('HCY', 100, 1.9)
    
    user_obj.bmi()()
    print(user_obj.bmi())
    
    
    # user_obj.bmi()
    print(user_obj.bmi)
    
    # 报错
    # user_obj.bmi() = 29
    # user_obj.bmi = 29
    
    # print(user_obj.name())
    # print(user_obj.name)
    
    # 修改属性
    # user_obj.name = 'zhaoshuaibing'
    #
    # print(user_obj.name)
    
    
    # 删除属性
    # del user_obj.name
    # print(user_obj.name)
  • 相关阅读:
    Curso de FP Interpretacion Lenguaje de Signos a distancia.
    T1载波与E1载波
    快速以太网中传输介质100BASETX
    MySQLdb
    NRZ编码、NRZI编码、曼彻斯特编码和差分曼彻斯特编码
    静态VLAN和动态VLAN
    Windows用脚本快速修改IP地址(Netsh)
    some skills in Windows
    shell 条件测试
    [转]不要做浮躁的嵌入式工程师
  • 原文地址:https://www.cnblogs.com/lvguchujiu/p/11944565.html
Copyright © 2011-2022 走看看