Chắc chắn, một cái gì đó như thế này:
class Employee(object):
def __init__(self, initial_data):
for key in initial_data:
setattr(self, key, initial_data[key])
Cập nhật
Như Brent Nash đề xuất, bạn có thể làm cho điều này linh hoạt hơn bằng cách cho phép các đối số từ khóa:
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])
Sau đó, bạn có thể gọi nó như thế này:
e = Employee({"name": "abc", "age": 32})
hoặc như thế này:
e = Employee(name="abc", age=32)
hoặc thậm chí như thế này:
employee_template = {"role": "minion"}
e = Employee(employee_template, name="abc", age=32)
def __init__(self,**initial_data)
bạn nhận được lợi ích bổ sung của việc có một phương thức init cũng có thể thực hiện các đối số từ khóa (ví dụ: "e = Employee (name = 'Oscar')" hoặc chỉ cần lấy từ điển (ví dụ: "e = Employee ( ** dict) ").