在__init__中使用** kwargs >>

问题描述 投票:0回答:2

我遇到以下问题:

class Student():
    def __init__(self,firstname, lastname, **kwargs):
        self.firstname = firstname
        self.lastname = lastname

student1 = Student("John" ,"Johnson" , {"Nationality": "Middle-Earth" , "Sports": ["volleyball","skiing"]})

我希望能够创建一个全都有姓和名,但只有一些人具有国籍或体育信息的学生。 (实际上,我正在尝试从json文件重构对象。)因此,我想将kwarg键转换为实例变量名称,例如此伪代码

for key,value in kwargs:
   self.key = value

以上是伪代码,但是有没有办法在正确的python中做到这一点?换句话说:从kwarg而不是所有预定义派生实例变量名称。

我知道这不会导致防错代码等,但是我想知道是否可以做到。

我遇到了以下问题:Student()类:def __init __(self,firstname,lastname,** kwargs):self.firstname =名字self.lastname =姓student1 = Student(...

python init kwargs
2个回答
1
投票

您需要将解压缩的kwarg传递给Student并使用setattr(object, name, value)来设置值:


0
投票

您可以在__init__方法中使用它:

© www.soinside.com 2019 - 2024. All rights reserved.