首页 新闻 赞助 找找看

关于python类中方法的绑定问题

0
悬赏园豆:10 [待解决问题]

class Test:

       def func():

           print('func')

test1 = Test()

test2 = Test()

test1.func()会报错 多提供了参数

test2.newfunc = Test.func()这样会正确执行

我的问题是以上两种调用方式有什么区别吗?为何会有这样的结果?

dragonflyliu的主页 dragonflyliu | 初学一级 | 园豆:195
提问于:2012-01-12 16:29
< >
分享
所有回答(2)
0

class Test:
    def func(self):
          print('func')
    @staticmethod
    def func2(cls):
           print('func2')

test1.func()这时候test1作为第一个参数传入的

Test.func2()这个是静态方法

Greatest | 园豆:678 (小虾三级) | 2012-01-12 17:49

谢谢。你的意思是不是这样呢?test2.newfunc = Test.func()这种方式,相当于定义了一个静态方法?

支持(0) 反对(0) dragonflyliu | 园豆:195 (初学一级) | 2012-01-12 17:56
0

class Test: 

      def func():

             print('func')

test = Test() 

test.newfunc = Test.func 

Test.func

 <function func="" at="" 0x023a32b8=""> 

test.newfunc 

<function func="" at="" 0x023a32b8=""> 

由上面可以看出,Test.func仅仅是一个普通函数,test.newfunc仅仅是绑定了一个普通函数,所以在调用时不需要所谓的“魔法”。

dragonflyliu | 园豆:195 (初学一级) | 2012-01-13 09:44
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册