问题说明了一切。
F.e。 当你引用一个带有bge.types模块类的对象时,它会像bge.types.class一样读。
答案 0 :(得分:0)
不,模块不是类。类构造主要用于定义类型,您可以通过调用它们来实例化类型。但是,您无法调用模块,也无法实例化它们。
您可以将模块视为单例:只能存在单个模块实例。
模块可以包含类型的成员,因此基本上模块可以包含类。
答案 1 :(得分:0)
令人惊讶的是,虽然模块类型本身是用C语言定义的,但它是一个类似于其他类型的类型,你甚至可以从它中继承它:
>>> import types
>>> types.ModuleType
<class 'module'>
>>> class C(types.ModuleType):
def foo(self):
print("hello")
>>> my_module = C('my_module')
>>> my_module
<module 'my_module'>
>>>
对此的使用是严格限制的虽然我做了一些有趣的事情,但是我写了一些代码,它会用sys.modules
中的一个类替换一个子类实例,该子类实例是原始模块的副本,但支持getattr
在正常使用中,只有一种模块类型:单个模块是模块类型的实例,而不是单独的类型。