我想创建自己的工厂时遇到问题。
我有一个看起来像这样的目录:
classes/
file_1.py
file_2.py
....
factory.py
在file_1
和file_2
中,我这样定义了一些类:
class A():
...
class B():
...
在factory.py
中,我想创建一个可以使用getattr
函数的类。
我试图这样做:
from classes import file_1, file_2
class Factory(file_1, file_2):
"""doctring"""
def build(dic):
factory = Factory()
return getattr(dic['name'], factory)(**dic['params'])
但是file_1
和file_2
是模块,而不是类。
那么我还能用什么其他方式来制造工厂?
如果有几个,那是最好的?
谢谢。
答案 0 :(得分:0)
您应该
from classes.file_1 import class_in_file_1
请注意,如果您使用的是python2
,则需要在__init__.py
目录中创建classes
文件。该文件为空没问题
答案 1 :(得分:0)
经过研究和讨论,我终于找到了解决方案。
我在__init__
文件夹中添加了classes/
:
classes/
__init__.py
file_1.py
file_2.py
....
factory.py
在这个文件中,我为每个文件添加了一个from classes.file_1 import *
。
因此,在factory.py
中,我只是这样做:
import classes
def build(dic):
return getattr(classes, dic['name'])(**dic['params']))
我不知道这是否是最好的方法,但是效果很好。
多亏了两个@enamoria和@Norrius