Giả sử tôi có một lớp với một phương thức khởi tạo (hoặc một hàm khác) nhận một số lượng biến đối số và sau đó đặt chúng làm thuộc tính lớp theo điều kiện.
Tôi có thể đặt chúng theo cách thủ công, nhưng có vẻ như các tham số biến đủ phổ biến trong python nên cần có một thành ngữ chung để thực hiện việc này. Nhưng tôi không chắc làm thế nào để thực hiện điều này một cách linh hoạt.
Tôi có một ví dụ sử dụng eval, nhưng điều đó hầu như không an toàn. Tôi muốn biết cách thích hợp để làm điều này - có thể với lambda?
class Foo:
def setAllManually(self, a=None, b=None, c=None):
if a!=None:
self.a = a
if b!=None:
self.b = b
if c!=None:
self.c = c
def setAllWithEval(self, **kwargs):
for key in **kwargs:
if kwargs[param] != None
eval("self." + key + "=" + kwargs[param])
pip install attrs, trang trí lớp học của bạn @attr.svà đặt các args là a = attr.ib(); b = attr.ib()vv Đọc thêm ở đây .