Tôi đã sử dụng các lớp được sử dụng để lấy dữ liệu từ một hệ thống, thực hiện một số sửa đổi và sau đó xuất chúng vào một hệ thống khác. Mà thường đi theo cách chuyển đổi nó thành một dict
hoặc một list
sau khi tôi đã thực hiện tất cả các chuyển đổi cần thiết.Trình bày một lớp như một dict hoặc danh sách
Cho đến nay những gì tôi đã làm là tôi đã thực hiện hai phương pháp được gọi là as_dict()
và as_list()
và sử dụng bất cứ khi nào tôi cần đại diện đó.
Nhưng tôi rất tò mò nếu có cách nào để có thể thực hiện dict(instance_of_my_class)
hoặc list(instance_of_my_class)
.
Tôi đã đọc lên trên magic methods và dường như điều này là không thể?
Và một số mẫu mã đơn giản để làm việc với:
class Cost(object):
@property
def a_metric(self):
return self.raw_data.get('a_metric', 0) * 0.8
[..]
# Repeat for various kinds of transformations
def as_dict(self):
return {
'a_metric': self.a_metric,
[...]
}
tại sao bạn cần chuyển lớp học thành từ điển/danh sách? mỗi lớp có một __dict__ được xây dựng, đó là nơi các thuộc tính lớp được lưu trữ trong nội bộ, có thể nó là đủ để chỉ lưu trữ nó. – theAlse
Có 'vars()' được xây dựng trong đó là cơ bản giống như 'obj .__ dict__'. – gatto
@theAlse chủ yếu để chuyển đổi nó cho các bản cập nhật trong cơ sở dữ liệu hoặc để chuyển đổi đơn giản thành json – gaqzi