如何在类中使用对象作为自身

时间:2016-10-29 07:05:37

标签: python python-3.x

一个简单的例子是这样的:

class abs_obj:
    def __init__(self, acceptType = abs_obj):
        # do something
        pass

给出了错误消息:

NameError: name 'abs_obj' is not defined

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

这里的问题是,在编译完所有方法之前,该类实际上并未创建,但默认值在编译时计算一次。

可以指定不同的默认值,然后通过操作函数的func_defaults属性将其更改为所需的值。但这很难看,并且不能保证在所有Python实现中都能正常工作。

解决这类问题的更常用方法是:

def __init__(self, acceptType = None):
    if acceptType is None:
        acceptType = abs_obj
    # do something
    pass

如果“无”是参数的有效值,则您必须选择其他值作为默认值。