动态选择Python函数的参数

2024-09-30 02:22:14 发布

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

我有两个从同一父类继承的类

class parent:
    @abstractmethod
    def update(self):
        pass

class child1(parent):
    def update(self):
        do_something

class child2(parent):
    def update(self):
        do_something_else

和一个类似于下面的脚本

child = either child1() or child2() depending on some condition
a = func_a()
b = func_b()
c = func_c()
d = func_d()

在这个脚本中,我想调用child.update(),并向它传递一些参数。这些参数可以是abcd或它们的组合,取决于可以是child1child2的子类型。这些必要参数的数量也不同

根据此条件,调整将哪些参数传递给update方法的最干净方法是什么

我想避免复杂的if, elif条件(因为我的实际代码比这个例子要大),我想将所有可能的参数作为dict传递,然后选择在update方法中使用哪些参数,但我也不喜欢


Tags: 方法self脚本child参数defupdate条件
1条回答
网友
1楼 · 发布于 2024-09-30 02:22:14

关键字参数为此类问题提供了一个干净的解决方案:

class parent:
    @abstractmethod
    def update(self, **kwargs):
        pass

class child1(parent):
    def update(self, **kwargs):
        print(kwargs['a'])
        print(kwargs['b'])

class child2(parent):
    def update(self, **kwargs):
        print(kwargs['a'])
        print(kwargs['c'])
        print(kwargs['d'])

c = child1()
c.update(a=2, b=3)

c = child2()
c.update(a=3, d='e', c=3)

相关问题 更多 >

    热门问题