全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 模拟技术 >

Python默认类中的绑定方法怎么解除和对象的绑定

时间:2022-08-18 16:04

人气:

作者:admin

标签: python  BMI 

导读:举个栗子:BMI指数,肥胖指数,很显然,这是一个计算过程,但是在我们人类的认知当中,BMI更应该是一个属性而非方法。...

property的使用

property是一个装饰器,可以将类方法转化为类属性的表达。

举个栗子:BMI指数,肥胖指数,很显然,这是一个计算过程,但是在我们人类的认知当中,BMI更应该是一个属性而非方法。

pYYBAGL98LOAZOFDAABPcM0Z4Jk459.pngpYYBAGL98LiAAR0XAACVZTCd58g801.png

当我们把代码换成:

poYBAGL98MuACC49AAB-P9uFHSc904.png

很明显,很难察觉这到底是执行了一个方法还是调用了一个属性。

绑定方法

一、对象绑定(默认)

绑定方法:

绑定给谁,就由谁来调用,谁来调用就把它当作一个参数自动传入

python中,凡是类中的方法默认情况都是绑定给对象使用的

poYBAGL98O2AEUw_AABRdlmLAiI387.pngpYYBAGL98PKABiPZAAArtdGovy0192.png

我们得到了一段bound method一段文字,这就是绑定方法。这里面的tell_info方法是绑定给对象使用的。

那么,当我们用类来调用该方法呢?会产生怎样的效果?

poYBAGL98RyAI07JAACb2d3TCZo749.pngpYYBAGL98S2AamLnAABEyN4GbGA758.png

为了更明显,我们随便定义一个函数来执行一下:

poYBAGL98UeAeAXeAAAp4bpV_aE923.pngpoYBAGL98U2AWcWlAABODPoCZdw883.png


这下很醒目了吧,当类中的方法,用类去调用时,该方法是被当做普通函数来执行,而对象去调用则为绑定方法。对象绑定方法在python是默认的,前两天使用的也都是对象绑定方法,这里就不做演示了。

二、类绑定方法(classmethod)

既然Python默认类中的方法或函数,都是绑定给对象使用。那么类中的绑定方法怎么解除和对象的绑定关系,进而绑定到类呢?

小明:“你问我我问谁啊?”

这个时候需要用到classmethod方法,它也是个装饰器。

poYBAGL98XqAR2D4AAC4SAAMCn4637.pngpYYBAGL98ZOAV0zhAABRhD_SvT0606.png

和对象的绑定方法一样:绑定给类,就由类来调用,并将类作为第一个参数传入;

和对象绑定方法不同在于:当对象在调用类的绑定方法时,也会默认把类当做参数传递进去。

cls和self都是一种命名习惯,cls作为第一个参数来表示类本身,在类方法中用到。

三、类绑定方法示例

pYYBAGL98cyAJgfzAADn6jthuTc136.pngpYYBAGL98dGAcyCaAACW1myfplE811.pngpoYBAGL98eSAASqnAACAhATIzFI099.png

例子用的可能过于粗糙,那能怎么办呢,我也是这样学的。。。

非绑定方法

在类中,有很多普通的方法,本身不需要绑定给对象或类来使用,谁都可以调用,没有自动传值效果,这就是非绑定方法。在python中,方法会自动绑定给对象,当我们需要解绑时来形成非绑定方法时,需要用到staticmethod方法,它还是一个装饰器。

poYBAGL98gWANyM7AABzyuDLLOg653.pngpoYBAGL98gqAWwLTAABwPS7UtWM053.png

给每个人生成一个id号的示例:

poYBAGL98iWAV6a_AADXV5krWRo516.png

poYBAGL98jmAbU47AAB6O9qQJ5E632.png



审核编辑:刘清

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信