从列表初始化python属性

时间:2019-04-12 09:30:57

标签: python

class C:
    def __init__(self, a,b):
        self.a = a
        self.b = b

Case 1:
Obj1 = C(1,2)
print Obj1.a
print Obj1.b

Case 2:
l= [1,2]
Obj2 = C(l)
print Obj2.a
print Obj2.b

我想用作为初始化方法传递的列表来初始化类的对象,如情况2所示,但它显示语法错误。 有什么办法可以在python中做到这一点?

我发现我可以在这里使用拆包工具。感谢您的回答。 我可以通过将这两种方法结合起来来做这样的事情吗 我知道我可以再追加一个数字并将其传递给初始化对象,但是有没有办法将这两种东西结合起来?

class C:
    def __init__(self, a,b):
        self.a = a
        self.b = b
        self.c = c

l= [1,2]
Obj2 = C(*l,3)


3 个答案:

答案 0 :(得分:2)

您要使用unpack运算符*

两者严格等效:

Obj1 = C(1,2)
Obj1 = C(*[1,2])

答案 1 :(得分:0)

您可以通过*

打开它的包装
l = [1, 2]
Obj2 = C(*l)
print(Obj2.a)
print(Obj2.b)

答案 2 :(得分:0)

您有两种选择,可以在外部或内部打开包装:

Inide:

class C:
    def __init__(self, l):
        self.a, self.b = l
C([1,2])

外部:

class C:
    def __init__(self, a, b):
        self.a = a
        self.b = b
C(*[1, 2])