一个简单的例子是这样的:
class abs_obj:
def __init__(self, acceptType = abs_obj):
# do something
pass
给出了错误消息:
NameError: name 'abs_obj' is not defined
有什么建议吗?
答案 0 :(得分:1)
这里的问题是,在编译完所有方法之前,该类实际上并未创建,但默认值在编译时计算一次。
可以指定不同的默认值,然后通过操作函数的func_defaults属性将其更改为所需的值。但这很难看,并且不能保证在所有Python实现中都能正常工作。
解决这类问题的更常用方法是:
def __init__(self, acceptType = None):
if acceptType is None:
acceptType = abs_obj
# do something
pass
如果“无”是参数的有效值,则您必须选择其他值作为默认值。