如何从用getattr调用的方法中访问参数?

2024-04-24 06:54:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下目标:

class Api(object):
    def __init__(self):
        pass

    def __getattr__(self, fname):
        # I cannot access the parameters of "fname"
        print("__getattr__ : ", fname)

执行时:

>>> api = Api()
>>> api.somefunction("foo", "bar", namedparam="baz")
__getattr__ :  somefunction

我无法检索给somefunction函数的“foo”、“bar”和“baz”参数。我怎样才能找回它们


Tags: selfapi目标objectfooinitdefbar
1条回答
网友
1楼 · 发布于 2024-04-24 06:54:00

可以使用func.partial函数执行此操作:

class Api(object):
    def __init__(self):
        pass

    def xcall(self, fname, *args, **kwargs):
        print("xcall", fname, args, kwargs)

    def __getattr__(self, fname):
        print("__getattr__ : ", fname)
        return partial(self.xcall, fname)

称之为:

>>> api = Api()
>>> api.somefunction("foo", "bar", namedparam="baz")
__getattr__ :  somefunction
xcall somefunction ('foo', 'bar') {'namedparam': 'baz'}

它所做的是返回一个可调用的partial(self.xcall, fname),然后接受参数。__getattr__函数只处理调用中的“点部分”,而不处理参数的传递

相关问题 更多 >