我用几种方法编写了一个类定义。 __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
我想我可以运行代码并尝试实例化一个小部件,但任何人都可以提供有关操作顺序和可接受的变量引用的启发性评论吗?也许提出一种更容易同意的替代语法?
编辑:在这里提出并回答了类似的问题How can I make the default value of an argument depend on another argument (in Python)? 但我很想知道当参数(即attr_list)不是与参数化的关键字参数相同的函数中的参数时,解释器如何处理该问题。是否在窗口小部件定义中定义了fancy_method及其行为?或者可以在实例化时定义默认参数吗?另一个问题并不包括这种歧义,因为默认参数必须在函数调用时定义,而不是定义。