博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
面向对象 的属性 类方法 静态方法
阅读量:5093 次
发布时间:2019-06-13

本文共 1508 字,大约阅读时间需要 5 分钟。

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

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

  

例一: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.86class 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.86class 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、可以将静态变量放在父类中。如果有好多子类都继承父类,就能够节约代码。提高太妈的复用性。

转载于:https://www.cnblogs.com/wf123/p/9378387.html

你可能感兴趣的文章
OO设计的接口分隔原则
查看>>
数据库连接字符串大全 (转载)
查看>>
java类加载和对象初始化
查看>>
对于负载均衡的理解
查看>>
django简介
查看>>
window.event在IE和Firefox的异同
查看>>
常见的js算法面试题收集,es6实现
查看>>
IO流写出到本地 D盘demoIO.txt 文本中
查看>>
Windows10 下Apache服务器搭建
查看>>
HDU 5458 Stability
查看>>
左手坐标系和右手坐标系
查看>>
solr后台操作Documents之增删改查
查看>>
http://yusi123.com/
查看>>
文件文本的操作
查看>>
Ubuntu linux下gcc版本切换
查看>>
记一次Web服务的性能调优
查看>>
jQuery.form.js使用
查看>>
(转)linux sort,uniq,cut,wc命令详解
查看>>
关于ExecuteNonQuery执行的返回值(SQL语句、存储过程)
查看>>
UVa540 Team Queue(队列queue)
查看>>