1. ホーム
  2. python

[解決済み] Pythonで辞書から属性を設定する

2022-07-21 07:24:15

質問

Pythonで辞書からオブジェクトを作成し、各キーがそのオブジェクトの属性であるようにすることは可能ですか?

このようなものです。

 d = { 'name': 'Oscar', 'lastName': 'Reyes', 'age':32 }

 e = Employee(d) 
 print e.name # Oscar 
 print e.age + 10 # 42 

この質問とかなり逆になってしまうと思うのですが。 オブジェクトのフィールドからのPython辞書

どのように解決するのですか?

もちろん、このようなものです。

class Employee(object):
    def __init__(self, initial_data):
        for key in initial_data:
            setattr(self, key, initial_data[key])

更新

Brent Nashが提案するように、キーワード引数も許可することで、これをより柔軟にすることができます。

class Employee(object):
    def __init__(self, *initial_data, **kwargs):
        for dictionary in initial_data:
            for key in dictionary:
                setattr(self, key, dictionary[key])
        for key in kwargs:
            setattr(self, key, kwargs[key])

すると、このように呼び出すことができます。

e = Employee({"name": "abc", "age": 32})

とかこんな感じ。

e = Employee(name="abc", age=32)

とか、こんな感じでもいいんです。

employee_template = {"role": "minion"}
e = Employee(employee_template, name="abc", age=32)