在python中检查是否至少指定了该函数的一个默认参数是什么?
我们假设我们有一些功能:
def some_function(arg_a=None, arg_b=None, arg_c=False)
Run Code Online (Sandbox Code Playgroud)
有一些默认参数.就我而言,我需要检查,如果任一arg_a或arg_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 继承原则中的最佳实践,当有一个“坏主意”来改变孩子的方法签名时。
假设我们有一些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类似的方法,但恐怕它会使我的代码可读性降低(自我记录)。
是否可以在 Gerrit Code Review 中删除组?可能是一些插件,或者这个动作应该以类似 SQL 的方式“手动”执行(例如 gerrit gsql)?