当前位置: 首页 > news >正文

12.8 类与对象的绑定方法和非绑定方法

12.8 类与对象的绑定方法和非绑定方法

  • 绑定方法:方法绑定给对象使用。
  • 对象的绑定方法:没有加任何装饰的方法就是对象的绑定方法;只有对象能用,类也能使用,类使用时必须传参数。
  • 类的绑定方法:加了@classmethod装饰器的方法就是类的绑定方法;类能使用,对象也能使用,但是数据类型依然是类;不需要传入参数。
  • 非绑定方法: 加了@staticmethod装饰器的方法就是非绑定方法,也就是一个普通函数。
class Foo:#绑定给对象:只有对象能用,类也能使用,类使用时必须传参数def f1 (self):print(self)@classmethod  #让被装饰的函数给类使用,不需要加参数,约定俗成参数为cls#绑定给类的方法类能使用,对象也能使用,但是参数依然是类。def f2(cls): print(cls)#什么都不绑定的,非绑定方法,定义了普通函数。@staticmethoddef f3(self): #和普通函数一样print(self)def f1 (aa):print(aa)#绑定给对象
f=Foo()
f.f1()
#输出:<__main__.Foo object at 0x000001AF5C9E9640>#绑定给类
Foo.f2()
#输出:<class '__main__.Foo'>
# Foo.f1(11) #不这样调用f.f2()
#输出: <class '__main__.Foo'>#非绑定方法
Foo.f3(22)
#22
f.f3('fff')
#输出:fff
  1. 什么时候使用对象的绑定方法?
    如果这个方法需要使用对象作为参数的时候,就得使用对象绑定方法。

  2. 什么时候使用类的绑定方法 ?
    这个方法需要使用类作为参数,就得使用类绑定方法:@classmethod。

  3. 什么时候使用非绑定方法?
    这个方法就不需要类作为参数,又不需要对象作为参数使用非绑定方法:@staticmethod。

http://www.agseo.cn/news/367/

相关文章:

  • Graspnet视觉抓取(一)——环境搭建
  • 3. 堆排序
  • 12.7 类的property/setter/delter特性
  • 9.8
  • 总结
  • 82python解析器反查当前安装了那些依赖包
  • 【Azure Container App】查看当前 Container App Environment 中的 CPU 使用情况的API
  • nfs服务
  • 低功耗蓝牙BLE与小程序通讯
  • 同事突然关心有没有对象?这可能是职场发展的隐形陷阱
  • TTS微软Azure
  • 12.6 类的封装
  • 深度解码你自己看着办:职场新人必须掌握的潜台词破解术
  • 6 个替代 Jira 的开源项目管理工具推荐
  • 记录一个Windows上的键盘鼠标模拟库和沟子库--Input
  • 惊世骇俗:《易经》六十四卦与数学公理完整映射表
  • 解决docker: Error response from daemon: Get “https://registry-1.docker.io/v2/“:连接超时问题
  • 27届春招备战一轮复习--第三期(推荐)
  • 数据集和数据系统_AI成为工作中很好用的协同成员了
  • IDM超详细图文安装激活教程,一次安装免费使用 Internet Download Manager
  • 标题
  • 12.5 多态与多态性
  • 集训日记
  • 数字孪生技术如何破解产线效率瓶颈? - 智慧园区
  • 三期集训 日记?
  • 需求爆炸?领歌3步科学精简法,让团队重获掌控力!
  • 从想法到代码:AI编程时代,我们如何高质量“喂养”AI?
  • 12.4 菱形继承问题(了解)
  • 25年CSP前ds做题记录
  • 极域电子学生机无法连接教师机