类下的函数的绑定与解除绑定

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了类下的函数的绑定与解除绑定相关的知识,希望对你有一定的参考价值。

类下的函数的绑定与解除绑定

在类内部定义的函数无非三种用途

一:绑定到对象的方法 只要是在类内部定义的,并且没有被任何装饰器修饰过的方法,都是绑定到对象的

class Foo:
    def test(self): #绑定到对象的方法
        pass
    def test1(): #也是绑定到对象的方法,只是对象.test1(),会把对象本身自动传给test1,因test1没有参数所以会抛出异常
        pass

绑定到对象,指的是:就给对象去用,

使用方式:对象.对象的绑定方法(),不用为self传值

特性:调用时会把对象本身当做第一个参数传给对象的绑定方法

二:绑定到类的方法:classmethod 在类内部定义的,并且被装饰器@classmethod修饰过的方法,都是绑定到类的

class Foo:
    def test(self): #绑定到对象的方法
        pass
    def test1(): #也是绑定到对象的方法,只是对象.test1(),会把对象本身自动传给test1,因test1没有参数所以会抛出异常
        pass

绑定到类,指的是:就类给去用,

使用方式:类.类的绑定方法()

特性:调用时会把类本身当做第一个参数传给类的绑定方法

三:解除绑定的方法:staticmethod

既不与类绑定,也不与对象绑定,不与任何事物绑定

绑定的特性:自动传值(绑定到类的就是自动传类,绑定到对象的就自动传对象)

解除绑定的特性:不管是类还是对象来调用,都没有自动传值这么一说了

所以说staticmethod就是相当于一个普通的工具包

class Foo:
    def test1(self):
        pass
    def test2():
        pass



    @classmethod
    def test3(cls):
        pass
    @classmethod
    def test4():
        pass



    @staticmethod
    def test5():
        pass

test1与test2都是绑定到对象方法:调用时就是操作对象本身

<function Foo.test1 at 0x0000000000D8E488>
<function Foo.test2 at 0x0000000000D8E510>

test3与test4都是绑定到类的方法:调用时就是操作类本身

<bound method Foo.test3 of <class ‘__main__.Foo‘>>
<bound method Foo.test4 of <class ‘__main__.Foo‘>>

test5是不与任何事物绑定的:就是一个工具包,谁来都可以用,没说专门操作谁这么一说

<function Foo.test5 at 0x0000000000D8E6A8>

以上是关于类下的函数的绑定与解除绑定的主要内容,如果未能解决你的问题,请参考以下文章

关于高级事件的使用

浅谈jquery之on()绑定事件和off()解除绑定事件

R语言使用attach函数绑定数据使用detach函数解除数据绑定以dataframe为例数据绑定之后可以直接使用数据列的名称访问数据

js解除事件绑定的问题,参数怎么填解除事件绑定需要函数名但是如果给出函数名 this又发生了变化

无法解除绑定 shell 函数

在淘汰赛中解除视图模型与视图的绑定