首页 > 解决方案 > 关键字参数默认值可以参数化吗?

问题描述

我正在用几种方法编写一个类定义。该__init__方法将列表实例化为参数,我希望其中一种方法采用与列表长度匹配的默认值的关键字参数。考虑代码片段:

class widget(object):
     def __init__(self, *attr_list):
         self.attr_list = attr_list
     def fancy_method(self, arglist = (None,) * len(self.attr_list)):
         pass

我想我可以只运行代码并尝试实例化一个小部件,但是任何人都可以就操作顺序和可接受的变量引用提供启发性的评论吗?也许提出一种更容易同意的替代语法?

编辑:在这里提出并回答了一个类似的问题如何使参数的默认值取决于另一个参数(在 Python 中)? 但是我很想知道当参数(即 attr_list)不是与它参数化的关键字参数相同的函数中的参数时,解释器如何处理这个问题。fancy_method 及其行为是否根据小部件定义进行定义?或者可以在实例化时定义默认参数吗?另一个问题不包括这种歧义,因为默认参数必须在函数调用时定义,而不是它的定义。

标签: pythonpython-3.x

解决方案


推荐阅读