属性---@property将方法伪装成属性

计算人的BMI指数:体重除以身高的平方

class Person:
    def __init__(self, name, hight, weight):
        self.name = name
        self.__hight = hight
        self.__weight = weight

    def bmi(self):
        return "%s 的 bmi 值%s" % (self.name, self.__weight / self.__hight ** 2)


p1 = Person("大阳哥", 1.68, 70)
print(p1.bmi())
# 大阳哥 的 bmi 值24.801587301587304

有个小问题,虽然代码上没有问题,但是在用语,认知上,有冲突。BMI是一个名词,调用的方法,是执行的一个动作

属性
在一个函数的上面加一个@property,执行的时候就不需要加()了
属性:将一个方法伪装成一个属性,在代码的级别上没有本质的提升,但是让其看起来更合理

class Person:
    def __init__(self, name, hight, weight):
        self.name = name
        self.__hight = hight
        self.__weight = weight

    @property  # 在一个函数的上面加一个@property,执行的时候就不需要加()了
    def bmi(self):
        return "%s 的 b
上一篇:port命令记录


下一篇:Python基础52:面向对象三大特性--封装