码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2017-04-21 20:41:21      阅读:265      评论:0      收藏:0      [点我收藏+]

标签:参数   pre   tran   第一个   tom   address   method   for   clean   

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

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

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

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>

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

标签:参数   pre   tran   第一个   tom   address   method   for   clean   

原文地址:http://www.cnblogs.com/kimyeee/p/6745061.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!