小编mac*_*hin的帖子

如何检查python中至少有一个指定函数的默认参数

在python中检查是否至少指定了该函数的一个默认参数是什么?

我们假设我们有一些功能:

def some_function(arg_a=None, arg_b=None, arg_c=False)
Run Code Online (Sandbox Code Playgroud)

有一些默认参数.就我而言,我需要检查,如果任一arg_aarg_b指定.所以我想实现这样的事情:

def some_function(arg_a=None, arg_b=None, arg_c=False):
    ...
    if arg_a is not None:
        ...
    elif arg_b is not None:
        ...
    else:
        raise ValueError('Expected either arg_a or arg_b args')
    ...
    ...
Run Code Online (Sandbox Code Playgroud)

那么,实现这种功能的更多pythonic方法是什么?

python function parameter-passing

8
推荐指数
2
解决办法
1781
查看次数

继承:更改子方法的签名

我试图找出什么是 Python 继承原则中的最佳实践,当有一个“坏主意”来改变孩子的方法签名时。

假设我们有一些BaseClient已经实现的create方法(和一些抽象的)的基类,它适用于几乎所有的“后代”,除了一个:

 class BaseClient(object):

     def __init__(self, connection=None):
         pass

     def create(self, entity_id, data=None):
         pass

 class ClientA(BaseClient):
     pass

 class ClientB(BaseClient):
     pass
Run Code Online (Sandbox Code Playgroud)

唯一的类ClientC需要另一种create方法的实现,并带有一些另一种方法签名

 class ClientC(BaseClient):
     ....
     def create(self, data):
         pass
Run Code Online (Sandbox Code Playgroud)

所以问题是如何以更“pythonic”的方式做到这一点,同时考虑到最佳的 python 实践?当然,我们可以在父(子)方法中使用*args, **kwargs和其他**kwargs类似的方法,但恐怕它会使我的代码可读性降低(自我记录)。

python oop inheritance overriding

5
推荐指数
1
解决办法
2419
查看次数

如何在 Gerrit Code Review 中删除 Group?

是否可以在 Gerrit Code Review 中删除组?可能是一些插件,或者这个动作应该以类似 SQL 的方式“手动”执行(例如 gerrit gsql)?

gerrit

3
推荐指数
1
解决办法
3857
查看次数