property

流过昼夜 提交于 2019-12-05 20:09:41

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)

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!