我在Python中为类生成列表时遇到了一些问题。我知道我有一些简单的东西可以忽略,但我无法弄明白。
到目前为止我的基本代码:
class Test:
def __init__(self,test):
self.__test = test
我的问题是,如果我输入
t = Test([1,3,5])
事情会很好,但如果我添加
t = Test()
我收到一个错误,我没有输入足够的参数。
我尝试过添加
def __init__(self,test=[])
作为默认参数,哪种有效,但后来我没有唯一的列表。
我一直在寻找,我无法弄清楚我做错了什么。任何帮助将不胜感激。
答案 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
时,显然。)