在Python中生成List类

时间:2010-04-20 14:34:26

标签: python list

我在Python中为类生成列表时遇到了一些问题。我知道我有一些简单的东西可以忽略,但我无法弄明白。

到目前为止我的基本代码:

class Test:
    def  __init__(self,test):
        self.__test = test

我的问题是,如果我输入

t = Test([1,3,5])

事情会很好,但如果我添加

t = Test()

我收到一个错误,我没有输入足够的参数。

我尝试过添加

def __init__(self,test=[])

作为默认参数,哪种有效,但后来我没有唯一的列表。

我一直在寻找,我无法弄清楚我做错了什么。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:4)

我不确定您要找的是什么,但您可能希望将None用作默认值:

class Test:
    def  __init__(self,test=None):
        if test is None:
            self.__test = []
        else:
            self.__test = test

答案 1 :(得分:3)

您可以使用以下习语:

class Test:
    def  __init__(self,test=None):
        self.__test = test if test is not None else []

答案 2 :(得分:3)

默认参数在定义函数时被计算一次,所以当你这样做时:

def __init__(self, test=[]):

'test'列表在所有未指定__init__参数的test调用之间共享。您想要的通常表达如下:

def __init__(self, test=None):
    if test is None:
        test = []

这为每个调用创建了一个新列表,其中test未传递参数(或者传递None时,显然。)