Trong python, tôi phải khởi tạo lớp nhất định, biết tên của nó trong một chuỗi, nhưng lớp này 'sống' trong mô-đun được nhập động. Một ví dụ sau:Triết lý động Python từ tên chuỗi của một lớp trong mô-đun được nhập động
loader-lớp kịch bản:
import sys
class loader:
def __init__(self, module_name, class_name): # both args are strings
try:
__import__(module_name)
modul = sys.modules[module_name]
instance = modul.class_name() # obviously this doesn't works, here is my main problem!
except ImportError:
# manage import error
số-động-nạp-mô-đun kịch bản:
class myName:
# etc...
tôi sử dụng sự sắp xếp này để thực hiện bất kỳ động nạp module được được sử dụng bởi lớp trình tải theo các hành vi nhất định được xác định trước trong các mô-đun dyn-loaded ...
Bất kỳ ý tưởng nào được đánh giá cao.
'module = __import __ (mô đun, fromlist = [name])' chỉ làm việc cho tôi. – umpirsky
Nếu bất kỳ ai gặp sự cố với phương thức nhập Sven đã đề cập ở trên, tôi thấy mã của tôi hoạt động tốt hơn bằng cách sử dụng phương thức sau thay vì [importlib.import_module] (http://docs.python.org/2/library/importlib.html#importlib .import_module). Có thể được sử dụng như: module = importlib.import_module (module_name) – jpennell
@jpennell bạn nên đăng câu trả lời đó, thường hữu ích hơn khi có thể trực tiếp sử dụng chuỗi được trả về bởi 'obj .__ module__' – Anentropic