Nếu tôi xác định mô-đun mô-đun với một thư mục tương ứng module/
, tôi có thể tự động tải các lớp học từ mô-đun trẻ em như a.py
hoặc b.py
?Làm thế nào để bạn tự động tải các lớp python từ một thư mục nhất định?
--module
----a.py
----b.py
Điều này đòi hỏi phải biết tên lớp để tìm kiếm? Tôi có thể thiết lập một lớp cơ sở bằng cách nào đó sẽ tải những đứa trẻ này?
Trường hợp sử dụng cơ bản là cho phép người dùng viết một số mã của riêng mình mà chương trình sẽ tải. Tương tự như cách đường ray cho phép bạn viết bộ điều khiển, chế độ xem và mô hình của riêng bạn trong một số thư mục nhất định.
Mã để tải module động Tôi đã cho đến nay là
def load(folder):
files = {}
for filename in os.listdir(folder):
if (filename[0] != '_' and filename[0] != '.'):
files[filename.rstrip('.pyc')] = None
# Append each module to the return list of modules
modules = []
mod = __import__(folder, fromlist=files.keys())
for key in files.keys():
modules.append(getattr(mod, key))
return modules
Tôi đã hy vọng để sửa đổi nó để trở về đối tượng lớp.
Nếu bạn kiểm tra khác [SE câu hỏi] (http://stackoverflow.com/questions/193161/what-is-the-best-project-cấu trúc-cho-một-python-ứng dụng) về cấu trúc dữ liệu mô-đun python, câu trả lời thứ ba đưa ra một câu trả lời ngắn khá tốt. Tôi đoán hơn bạn có thể làm một cái gì đó như: 'từ nhập khẩu mô-đun a' tự động. – Zenon