我有一组字段(字符串(,在不同的结构下,我想从它们创建一个字符串;
-
我有一组默认字段作为元组:
('created_at', 'active')
-
r_field
作为自变量接收,可以是None
、'all'
或元组('descr', city')
-
一个函数
set_fields
,用于转换字符串中的字段:def set_fields(fields=None, particle=None): default_fields = ('created_at', 'active') default_fields = ', '.join([(particle + '.' if particle else "") + s for s in default_fields]) if isinstance(fields, tuple): fields = default_fields + ', ' + ", ".join([(particle + '.' if particle else "") + s for s in fields]) elif isinstance(fields, str) and fields == 'all': fields = '*' else: fields = default_fields return fields
set_fields
由其他函数调用。此函数获取字段并对它们或它们的值执行其他操作。
def rodan(fields=None)
set_fields=(fields=(fields, 'is_bold'), particle='c')
.................
问题是,每个方法都可以自己添加其他字段,如is_bold
示例1:
rodan(fields=('name', 'prime'))
结果:
c.created_at, c.active, c.is_bold, c.name, c.prime
示例2:
rodan()
结果:
c.created_at, c.active, c.is_bold
示例3:
rodan(fields='all')
结果:
*
我的函数可以工作,但不处理函数何时需要添加其他默认字段,如'is_bold'
,除了为调用set_fields
的所有其他函数添加的一般默认字段。此外,我不确定我的方法是否是最佳的,对于我想要实现的目标。
我不确定我是否完全理解这个问题。你的意思是想处理其他方法调用的其他默认字段吗?如果是这样的话,只需简单添加可选的args
:
def set_fields(fields=None, particle=None, addl_def_fields=None):
default_fields = ('created_at', 'active')
# additional handling for other default fields
if addl_def_fields:
if isinstance(addl_def_fields, tuple):
default_fields += addl_def_fields
elif isinstance(addl_def_fields, str):
default_fields += (addl_def_fields, )
# default fields will now contain all your added defaults.
# ... rest of your codes
现在,当您的其他函数引用set_fields
时,只需在调用时添加新的关键字addl_def_fields=('is_bold', 'is_italics')
def rodan(fields=None)
set_fields=(fields=fields, particle='c', addl_def_fields=('is_bold', 'is_italics'))
.................