python - 传递关键字参数

标签 python

我有一个类函数需要“传递”一个特定的关键字参数:

def createOrOpenTable(self, tableName, schema, asType=Table):
    if self.tableExists(tableName):
        return self.openTable(tableName, asType=asType)
    else:
        return self.createTable(self, tableName, schema, asType=asType)

当我调用它时,出现如下错误:

TypeError: createTable() got multiple values for keyword argument 'asType'

有没有办法“通过”这样的关键字参数?

我想过几个答案,但没有一个是最佳的。从最坏到最好:

  • 我可以更改一个或多个函数的关键字名称,但我想对所有三个函数使用相同的关键字,因为参数具有相同的含义。

  • 我可以按位置而不是按关键字传递 asType 参数,但是如果我将其他关键字参数添加到 openTablecreateTable,我必须记得更改电话。我宁愿它自动适应,就像我可以使用关键字形式一样。

  • 我可以在这里使用 **args 形式来获取关键字参数的字典,而不是使用默认参数,但这看起来就像用大锤打苍蝇一样 (因为正确解析它需要额外的代码行)。

有没有更好的解决方案?

最佳答案

你做对了...只需在第二个函数调用中取出 self :)

  return self.createTable(self, tableName, schema, asType=asType)

应该是:

  return self.createTable(tableName, schema, asType=asType)

关于python - 传递关键字参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1018359/

相关文章:

python - 在 Python 中加载 dll 时出现 Windows 错误 1114

python - 包括内部节点路径的 N 叉树遍历

python - 使stm32上的CRC与软件实现匹配

python - 机器人框架中的测试表单

python - 导入自己的数据,例如 MNIST 或 CIFAR10 load_data()

python - 如何从 Pandas 数据框中的列中提取城市、州?

python - 我应该使用什么进行远程桌面控制?

python - Kivy 不打印反斜杠

python - 如何根据正则表达式对列重新排序?

python - 获取一列的值,其中一列为最大值,另一列为最小值