Tôi đang làm việc với một ORM chấp nhận các lớp như đầu vào và tôi cần để có thể cho nó một số lớp được tạo động. Hiện nay, tôi đang làm một cái gì đó giống như ví dụ giả tạo này:Cách ít nhất là xấu để tạo các lớp Python trong thời gian chạy là gì?
def make_cls(_param):
def Cls(object):
param = _param
return Cls
A, B = map(make_cls, ['A', 'B'])
print A().foo
print B().foo
Trong khi điều này hoạt động tốt, nó cảm thấy ra bởi một chút: ví dụ, cả hai lớp in như <class '__main__.Cls'>
trên repl. Trong khi vấn đề tên không phải là một vấn đề lớn (tôi nghĩ rằng tôi có thể làm việc xung quanh nó bằng cách thiết lập __name__
), tôi tự hỏi nếu có những thứ khác tôi không biết. Câu hỏi của tôi là: có cách nào tốt hơn để tạo các lớp động hay ví dụ của tôi chủ yếu là tốt?
Bản sao có thể có của http://stackoverflow.com/questions/4513192/python-dynamic-class-names – Cez
Như ghi chú của Roman bên dưới, bạn sẽ muốn sử dụng 'loại' để tạo động các lớp. Câu trả lời hàng đầu trong [câu hỏi này] (http://stackoverflow.com/questions/100003/what-is-a-metaclass-in-python) bao gồm chi tiết này rất chi tiết. – aganders3
"ORM"? ORM nào? Tỷ lệ cược là tốt ORM làm nhiều điều này cho bạn. –