0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

冬至配饺子 来源:多兰多 作者:Toranto 2022-08-18 16:04 次阅读

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



审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • python
    +关注

    关注

    53

    文章

    4752

    浏览量

    84060
  • BMI
    BMI
    +关注

    关注

    0

    文章

    10

    浏览量

    3249
收藏 人收藏

    评论

    相关推荐

    鸿蒙开发Ability Kit程序框架服务:Stage模型绑定FA模型ServiceAbility

    本小节介绍Stage模型的两种应用组件如何绑定FA模型ServiceAbility组件。
    的头像 发表于 06-25 21:47 184次阅读
    鸿蒙开发Ability Kit程序框架服务:Stage模型<b class='flag-5'>绑定</b>FA模型ServiceAbility

    鸿蒙开发Ability Kit程序框架服务:FA模型绑定Stage模型ServiceExtensionAbility

    本文介绍FA模型的三种应用组件如何绑定Stage模型的ServiceExtensionAbility组件。
    的头像 发表于 06-25 10:43 188次阅读
    鸿蒙开发Ability Kit程序框架服务:FA模型<b class='flag-5'>绑定</b>Stage模型ServiceExtensionAbility

    鸿蒙ArkTS声明式开发:跨平台支持列表【绑定手势方法】 手势处理

    为组件绑定不同类型的手势事件,并设置事件的响应方法
    的头像 发表于 06-15 09:17 525次阅读
    鸿蒙ArkTS声明式开发:跨平台支持列表【<b class='flag-5'>绑定</b>手势<b class='flag-5'>方法</b>】 手势处理

    BLE蓝牙掉电绑定信息消失的原因?怎么解决?

    测试手机连接后,重启ESP32S3,板子上的绑定信息就丢失了。还有我添加到白名单的地址也会随着重启消失。白名单我可以通过NVS记录,但是绑定的密钥信息我无法存储。我查阅了BLE的接口文档,没有看到保存绑定信息的接口。请教一下我应
    发表于 06-14 06:25

    鸿蒙开发接口Ability框架:【@ohos.application.formBindingData (卡片数据绑定)】

    卡片数据绑定模块提供卡片数据绑定的能力。包括FormBindingData对象的创建、相关信息的描述。
    的头像 发表于 05-06 17:25 377次阅读
    鸿蒙开发接口Ability框架:【@ohos.application.formBindingData (卡片数据<b class='flag-5'>绑定</b><b class='flag-5'>类</b>)】

    udp_bind这个绑定的端口怎么解除

    请教下,udp_bind 这个绑定的端口,刚开始是可以的,但是重新绑定时返回错误,有什么方法可以在 重新绑定解除之前的
    发表于 04-22 07:41

    服务器宝塔面板怎么绑定多个ip?

    服务器宝塔面板怎么绑定多个ip?在宝塔面板绑定多个IP地址可以通过以下步骤完成: 1、登录宝塔面板 使用你的浏览器访问宝塔面板的网址,并使用管理员账号和密码登录。 2、进入站点管理 在宝塔面板左侧
    的头像 发表于 01-12 17:29 1182次阅读

    如何绑定ip地址与mac物理地址

    如何绑定ip地址与mac物理地址绑定IP地址与MAC物理地址是一种网络管理和安全措施,可以帮助确保网络设备的身份验证和安全性。在这篇文章,我们将详细介绍如何进行IP地址与MAC
    的头像 发表于 12-07 09:33 5612次阅读

    Linux内核驱动与单个PCI设备的绑定和解绑定

    在Linux内核2.6.13-rc3以前,驱动和设备之间的绑定和解绑只能通过insmod(modprobe)和rmmod来实现,但是这种实现方法有一个弊端,就是一旦绑定或者解绑定都是针
    的头像 发表于 11-17 17:11 1306次阅读
    Linux内核驱动与单个PCI设备的<b class='flag-5'>绑定</b>和解<b class='flag-5'>绑定</b>

    Python中元的作用

    1.什么是 在理解元之前,我们必须先掌握Python(class)。 和大多数语言一样,Pyt
    的头像 发表于 11-02 11:18 382次阅读
    <b class='flag-5'>Python</b>中元<b class='flag-5'>类</b>的作用

    Python普通方法、静态方法方法的区别

    ,由于 Python 语言的灵活性,这部分内容在日常编码过程,很容易被忽略掉 本篇文章将和大家一起聊聊这几个小知识点 2.@staticmethod 装饰器 @staticmethod 修饰的方法称为
    的头像 发表于 11-02 11:03 561次阅读

    labview 数据绑定求助

    求助 LABVIEW 大神 在每个控件属性中有一个数据绑定绑定到本机的OPC服务器上 是正常可以用的如果我想把这个绑定路径做成根我提供的字符串路径动态绑定的这个该怎么实现
    发表于 10-24 09:19

    车规模块系列(五):聊一聊DBB/铜绑定技术

    相对于传统的铝绑定线工艺,铜绑定线需要对芯片表面进行要求更高的金属化,而丹佛斯键合缓冲Danfoss Bond Buffer (DBB)技术就是为了铜绑定线进行的表面处理。
    的头像 发表于 10-08 10:22 1715次阅读
    车规模块系列(五):聊一聊DBB/铜<b class='flag-5'>绑定</b>技术

    Python继承的基本规则

    继承规则 与其他基于的语言一样,可以通过继承组合多个定义。 定义可以扩展(或继承)多个其他。这些又可以扩展其他
    的头像 发表于 09-20 14:24 424次阅读

    Objects:为对象提供对象技术

    的缩写。这里,全部大写的项目是参数,以百分号开头的项目是方法。 在典型的基于的应用程序,可以根据这些(以及专门的系统子类)定义。所
    的头像 发表于 09-20 14:14 319次阅读
    Objects:为<b class='flag-5'>对象</b><b class='flag-5'>类</b>提供<b class='flag-5'>对象</b>技术