我有一个Python类,其方法如下:
class Table(object):
def create_index(self, *fields, name=None):
...
在python 3.4中可以正常工作,但是SyntaxError
由于args和默认kwarg的顺序在python 2.7中抛出。如果我将其更改为:
def create_index(self, name=None, *fields):
...
根据这篇文章,它可以在python 2.7中工作,并且在python 3.4中不会引发错误,但是,fields
无论我传入什么内容,它总是以空元组结尾。我这样称呼它:
table.create_index('address')
有什么方法可以定义与两个版本兼容的args和默认kwargs函数?
可悲的是,在Python 2中,您无法*args
同时填充,同时也忽略了可选的命名参数。正是为了这个目的,您正在使用的功能是在Python 3中添加的。
这是我能想到的最佳解决方法:
def create_index(self, *fields, **kwargs):
name = kwargs.pop('name', None)
它强迫您提供name
按名称,但是您的原始python 3接口似乎已经要求这样做。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句