Milano
Milano

Reputation: 18705

How to process class **kwargs in Python?

How could I set object attributes using "one" class argument **kwargs?

The thing I want is to do this code in one loop:

class purchase():
    def __init__(self,**kwargs):
        self.set_attributes(kwargs)

    def set_attributes(self,kwargs):
        if 'file' in kwargs.keys():
            self.file = kwargs['file']
        if 'text' in kwargs.keys():
            self.text = kwargs['text']
        if 'language' in kwargs.keys():
            self.language = kwargs['language'] 

It should be something like:

class purchase():
    def __init__(self,**kwargs):
        self.set_attributes(kwargs)

    def set_attributes(self,kwargs):
        for v,k in kwargs.iteritems():
            self.k = v

which of course does not work.

Is there a way how to programatically set object attributes in one loop?

Upvotes: 1

Views: 353

Answers (1)

Yoav Glazner
Yoav Glazner

Reputation: 8066

Here you go

class purchase():
    def __init__(self,**kwargs):
        self.set_attributes(kwargs)

    def set_attributes(self,kwargs):
        for k, v in kwargs.iteritems():
            setattr(self, k, v)

Upvotes: 2

Related Questions