勃艮第red 2021-08-27 20:23 采纳率: 63.6%
浏览 22

方法是如何绑定到对象的?

面向对象讲了一堆,定义类,创建实例对象。
Q1:但是没有说为什么类中定义的以self为首参的函数会绑定到实例对象,明明def定义函数,传递的参数只是一个形参,而在类中def就会绑定到实例,实例对象调用类方法会隐式自动传参self(自己),如何做到。
Q2:类也是一种对象为什么不能直接定义cls函数,然后传递自己,而要通过装饰器classmethod。
感觉自己问题好多。

  • 写回答

1条回答 默认 最新

  • 关注

    在通过实例对象调用方法时 func会被认为是实例对象的实例方法,会传递实例对象自身给方法的第一个参数(self),

    而不使用修饰符,在用类名调用func时,func就只是类中的一个普通属性。只是属性的值是一个函数。
    用类对象调用func函数。只是将func做为一个普通函数来调用的。func函数与类对象没什么关系,
    和直接 func() 这样调用没区别,做为普通函数自然不会传递多于的参数
    这与设置了@staticmethod 是类似的。

    只有设置了 @classmethod 为类方法,在调用时才会传递类对象(cls)。

    评论

报告相同问题?

问题事件

  • 修改了问题 8月27日
  • 创建了问题 8月27日

悬赏问题

  • ¥15 征集Python提取PDF文字属性的代码
  • ¥15 有偿求苍穹外卖环境配置
  • ¥15 代码在keil5里变成了这样怎么办啊,文件图像也变了,
  • ¥20 Ue4.26打包win64bit报错,如何解决?(语言-c++)
  • ¥15 clousx6整点报时指令怎么写
  • ¥30 远程帮我安装软件及库文件
  • ¥15 关于#自动化#的问题:如何通过电脑控制多相机同步拍照或摄影(相机或者摄影模组数量大于60),并将所有采集的照片或视频以一定编码规则存放至规定电脑文件夹内
  • ¥20 深信服vpn-2050这台设备如何配置才能成功联网?
  • ¥15 Arduino的wifi连接,如何关闭低功耗模式?
  • ¥15 Android studio 无法定位adb是什么问题?