Dưới đây là một lớp dụ:Có sử dụng 'exec' trong điều kiện kiểm soát một mối đe dọa bảo mật không?
from datetime import datetime
class Article:
published = datetime.now()
for propname in "year month day hour minute second".split():
exec "%s = property(lambda self: self.published.%s)"%(propname, propname)
del propname
Như bạn thấy, tôi đang sử dụng exec
để tối ưu hóa việc tạo ra nhiều property()
đối tượng. Tôi thường đọc rằng sử dụng exec
là xấu và rằng nó là một lỗ hổng bảo mật trong chương trình của bạn. Trong trường hợp này, phải không?
+1 cho điều này. Có gần như luôn luôn là một thay thế cho 'eval()' và 'exec()'. –
Nó có thể dễ dàng được thực hiện trong một trang trí lớp để thêm các thuộc tính lớp thay vì các thuộc tính dụ. – agf