Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将*args、接收类型作为第一个参数注入静态方法_Python_Static Methods_Inject - Fatal编程技术网

Python 将*args、接收类型作为第一个参数注入静态方法

Python 将*args、接收类型作为第一个参数注入静态方法,python,static-methods,inject,Python,Static Methods,Inject,我有几个类需要注入一个静态方法;应该使用type(而不是instance)作为第一个参数调用此静态方法,并将所有剩余的参数传递给实现(): 输出为(前两行正确,其他两行不正确): 我怀疑lambda行中存在问题,默认参数与*args混合在一起,但我无法解决这个问题 如何在存在其他参数的情况下正确传递类对象?您需要使用而不是静态方法 for c in (Class1,Class2): c.me = classmethod(_AnyClass_me) >>> Class1

我有几个类需要注入一个静态方法;应该使用type(而不是instance)作为第一个参数调用此静态方法,并将所有剩余的参数传递给实现():

输出为(前两行正确,其他两行不正确):

我怀疑lambda行中存在问题,默认参数与
*args
混合在一起,但我无法解决这个问题

如何在存在其他参数的情况下正确传递类对象?

您需要使用而不是静态方法

for c in (Class1,Class2):
    c.me = classmethod(_AnyClass_me)

>>> Class1.me()
__main__.Class1 () {}
>>> Class2().me()
__main__.Class2 () {}
>>> Class1.me(123)
__main__.Class1 (123,) {}
>>> Class2().me(123)
__main__.Class2 (123,) {}

酷!我真正的类有共同的基类,我所要做的就是实现
classmethod
,这是我不知道的——同一个静态方法,它知道调用它的类。谢谢很高兴看到python有多少很酷的角落。
__main__.Class1 () {}
__main__.Class2 () {}
123 () {}
123 () {}
for c in (Class1,Class2):
    c.me = classmethod(_AnyClass_me)

>>> Class1.me()
__main__.Class1 () {}
>>> Class2().me()
__main__.Class2 () {}
>>> Class1.me(123)
__main__.Class1 (123,) {}
>>> Class2().me(123)
__main__.Class2 (123,) {}