zoukankan      html  css  js  c++  java
  • 面向对象 的属性 类方法 静态方法

    一、面向对象的成员包括:字段(普通字段属于对象,静态字段属于类)、方法、属性

      属性:为什么引入属性?      先看个例子!!!

      

    例一:BMI指数(bmi是计算而来的,但很明显它听起来像是一个属性而非方法,如果我们将其做成一个属性,更便于理解)
    
    成人的BMI数值:
    过轻:低于18.5
    正常:18.5-23.9
    过重:24-27
    肥胖:28-32
    非常肥胖, 高于32
      体质指数(BMI)=体重(kg)÷身高^2(m)
      EX:70kg÷(1.75×1.75)=22.86
    
    
    
    class Person:
        def __init__(self, name, weight, height):
            self.name = name
            self.height = height
            self.weight = weight
    
        def bmi(self):
            return ('%s 的 BMI指数为 %s' % (self.name, (self.weight / self.height ** 2)))
    
    
    b = Person('王帆', 67, 1.78)
    print(b.bmi())

    此时代码能够实现该功能 ,但是,bim是一个名词,相当于一种属性,但是在代码中却执行了bmi方法,并且打印的时候需要打印b.bmi()  而不是 b.bmi,所以,在python中不合理,需要进行改进。

    此时引入了属性。

    属性,就是将方法伪装成一个属性,代码本身没有提升,只是更加合理。

    例一:BMI指数(bmi是计算而来的,但很明显它听起来像是一个属性而非方法,如果我们将其做成一个属性,更便于理解)
    
    成人的BMI数值:
    过轻:低于18.5
    正常:18.5-23.9
    过重:24-27
    肥胖:28-32
    非常肥胖, 高于32
      体质指数(BMI)=体重(kg)÷身高^2(m)
      EX:70kg÷(1.75×1.75)=22.86
    
    
    class Person:
        def __init__(self, name, weight, height):
            self.name = name
            self.height = height
            self.weight = weight
    
        @property     # 在需要调用的函数上方 添加 @property 这个装饰器,将bmi方法伪装成一个属性
        def bmi(self):
            return ('%s 的 BMI指数为 %s' % (self.name, (self.weight / self.height ** 2)))
    
    
    b = Person('王帆', 67, 1.78)
    print(b.bmi)      # 打印的时候为 b.bmi 而不用再加括号。

    属性的应用:

      

    二、类方法:用类名调用的方法,类方法中约定俗成第一个参数为cls。python自动将类名传给cls。

      

      类方法的应用场景

      第一:

      

      第二:对类中的静态变量进行改变。

            对象无法对类中的静态变量进行改变。

      第三:在继承中,父类要得到子类的类空间,在里边为所欲为。

      

    三、静态方法

      

      静态方法好处:

      1、当类有多个函数的时候,可以将实现一个功能的多个函数放到一个类中,是代码块更加清晰。

      2、可以将静态变量放在父类中。如果有好多子类都继承父类,就能够节约代码。提高太妈的复用性。

  • 相关阅读:
    学派:儒学
    学派:儒家
    佛教-文章:释迦牟尼佛最有灵性的4句话
    阿里云-OSS-Help-安全白皮书:白皮书
    佛教-揭语:诸法因缘生,我说是因缘;因缘尽故灭,我作如是说;诸法从缘起,如来说是因;彼法因缘尽,是大沙门说。
    深度学习系列之ANN
    IDEA无法启动:Failed to create JVM:error code -4
    Windows8-x64 VMWare安装Linux CentOS6-x64
    [数位dp] bzoj 3209 花神的数论题
    UVALive 6084 Happy Camper(数学题)
  • 原文地址:https://www.cnblogs.com/wf123/p/9378387.html
Copyright © 2011-2022 走看看