绑定方法 与 非绑定方法


类中定义函数分为了两大类:

1. 绑定方法

    特殊之处:  绑定给谁就应该由谁来调用,谁来调用就会将谁当做第一个参数自动传入

    绑定给 对象 的方法: 在类中定义函数没有被任何装饰器修饰的情况下,默认就是绑定对象的

    绑定给 的方法: 为类中定义函数添加一个装饰器classmethod,就是绑定类的

2. 非绑定方法

    特殊之处: 非绑定方法就是一个普通函数,既不与类绑定又不与对象绑定,意味着类与对象都可以调用,但是无论谁来调用都是一个普通函数,没有自动传值效果

    绑定方法: 为类中定义函数添加一个装饰器staticmethod,就是非绑定方法

 ps:  区分时看 有没有 自动传入

 

#绑定 绑定方法与非绑定方法
class Foo:
    def func(self):       #绑定给 对象的方法 类也可以调用,但是类调用就是一个普通函数,没有自动传值的效果
        print('func',self)

    @classmethod     #绑定给 类的的方法   def func1(cls): print('func1',cls) @staticmethod #非绑定方法, 普通函数 
  def func3(x,y): print(x,y)
obj = Foo()obj.func()Foo.func1()obj.func1()obj.func3(1,2)Foo.func3(1,2)
结果:func <__main__.Foo object at 0x000001F4111D7A58>func1 <class '__main__.Foo'>func1 <class '__main__.Foo'>1 21 2

总结:

   1、绑定给对象的,应该由对象来调

ps:绑定给对象的方法,类也可以调用,但是类调用就是一个普通函数,没有自动传值的效果

   2、绑定给类的,应该由类来调

 


码神部落- 版权声明 1、本主题所有言论和图片纯属会员个人意见,与码神部落立场无关。
2、本站所有主题由该帖子作者发表,该帖子作者一念成空码神部落享有帖子相关版权。
3、码神部落管理员和版主有权不事先通知发贴者而删除本文。
4、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者一念成空码神部落的同意。
5、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任。
6、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责。
7、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意。

最新回复 (0)
    • 码神部落
      2
        立即登录 立即注册 GitHub登录
返回
发新帖
作者最近主题: