我怀疑这是导致“你为什么要这么做”的问题之一但这里有:
我需要找到一种方法来伪造__main__
中定义的类的模块,即:
假设我们有a.py:
class A(object):
name = "a"
pass
和b.py:
import inspect
import a
class B(object):
__name__ = a.__name__
name = "b"
pass
print inspect.getmodule(B)
调用b.py会导致:
<module '__main__' from 'b.py'>
那么,我怎样才能把类A的模取为b,而不把它移到b中呢?你知道吗
您可以设置类的
__module__
属性,但需要注意:主要的警告是,如果在调用
getmodule(A)
时模块b
尚未导入,那么这将导致getmodule
返回None。我认为,如果以某种非标准的方式导入b
,也有可能出现问题,比如通过隐式相对导入而不是作为包的一部分导入它(如果它是包的一部分)。你知道吗不过,从概念上讲,你所做的有些可疑。将A的模块设置为其他模块是有风险的,因为当真正的模块存在时,该模块可能不为人所知(即导入),而且事实上,“伪装”模块甚至可能不存在。你知道吗
相关问题 更多 >
编程相关推荐