# test1.py
class DatabaseEngine(object):
pass
# test2.py
from test1 import DatabaseEngine
class OracleEngine(DatabaseEngine):
pass
# test3.py
from test1 import DatabaseEngine
class MysqlEngine(DatabaseEngine):
pass
# test4.py
# try 1
from test1 import DatabaseEngine
print DatabaseEngine.__subclasses__() # returns empty list
# try 2
from test2 import DatabaseEngine
from test3 import DatabaseEngine
print DatabaseEngine.__subclasses__() # returns [oracle, mysql]
为什么#try1无法识别子类,而#try 2识别其子类。你知道吗
我想在test4.py中使用\uuuuuuu子类()\uuuuu,而不做
from test2 import DatabaseEngine
from test3 import DatabaseEngine
有办法吗?你知道吗
Try 1不起作用b/c导入显式计算该模块中的代码。在try 1中不导入包含子类的模块,因此不会对它们进行求值。你知道吗
如果您选择将子类保留在不同的模块中,并希望访问所有子类,那么必须至少有一个模块将它们全部导入。你知道吗
我建议创建另一个包含子类实现的文件,将它们导入其中,然后在需要子类时,导入这个文件。你知道吗
相关问题 更多 >
编程相关推荐