假设我有一个带有实例方法my_method的MyClass类。
class MyClass:
...
def my_instance_method(self, f):
return f self
...
我希望能够传入一个可能是MyClass的实例方法的函数f,或者可能包含MyClass的实例方法(例如在lambda中或者与其他实例方法结合使用),但我不能&# 39; t想要将实例传递给参数函数 - 我只是想让参数函数假设" self"与" self"相同如果参数函数需要一个实例,那么外部调用。
例如,
MyClassInstance.my_instance_method(MyClass.another_instance_method(args))
我不确定如何在Python中最好地解决这个问题,但我觉得它类似于State monad在Haskell中的工作方式以及隐式参数在Scala中的工作方式。任何帮助将不胜感激!
答案 0 :(得分:3)
您只需像任何其他函数一样调用此类函数或未绑定方法。其他论据必须单独传递。在最一般的形式中,它看起来像
RewriteEngine on
RewriteCond %{QUERY_STRING} ^$
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^([^.]+)\.mediagrex\.com$ [NC]
RewriteRule ^/?$ /index.php?id=%1 [L]
RewriteCond %{QUERY_STRING} ^$
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^([^.]+)\.mediagrex\.com$ [NC]
RewriteRule ^(.+?)/?$ /index.php?id=%1 [L]
对此方法的调用可能看起来像
def my_instance_method(self, f, *args, **kwargs):
return f(self, *args, **kwargs)