可调用对象作为不传递自身作为参数的方法

时间:2019-08-25 07:30:47

标签: python

更新: 添加以下获取功能将解决该问题:

MultiProvider(providers: [
  ...
  Provider<ApplicationSettings>.value(value: settings),
  ...
], child: OKToast(child: MyHomePage())),

最近,当我尝试使用可调用对象作为对象的方法时遇到问题。

class clsB():
    def __call__(self,self_from_class_a):
        print(self_from_class_a)
        pass

    def __get__(self, instance, cls):
        return lambda *args,**kwargs:self.__call__(instance,*args,**kwargs)

基本上,“ callable_b”和“ fnB”的行为相同,因此可以合理地认为在执行以下操作时它将起作用:

class clsB():
    def __call__(self,self_from_class_a):
        print(self_from_class_a)
        pass

callable_b = clsB()

def fnB(self_from_class_a):
    print(self_from_class_a)


callable_b('x')
>>> x
fnB('x')
>>> x

有人能解释为什么会这样吗?

0 个答案:

没有答案
相关问题