我试图在一个类中导入不同的模块:
class TCON_COMMS(object):
TCON_COMMS_AARDVARK = 0
TCON_COMMS_GPU = 1
TCON_COMMS_SMC_I2C = 2
def __init__(self, TCON_COMMS_METHOD=0):
self.TCON_COMMS_METHOD = TCON_COMMS_METHOD
if self.TCON_COMMS_METHOD == self.TCON_COMMS_AARDVARK:
print("Using Aardvark for TCON communication.")
from i2c_helper_aardvark import *
elif self.TCON_COMMS_METHOD == self.TCON_COMMS_GPU:
print("Using AUX for TCON communication.")
from i2c_helper_aux import *
else:
print("Using SMC for TCON communication.")
from i2c_helper_smc import *
当我写这篇文章时,我得到:
^{pr2}$这是什么意思?
在函数内部,局部变量存储在带编号的槽中,而不是像全局变量那样存储在字典中。这意味着Python编译器在创建函数的code对象之前需要知道函数的所有局部变量的名称,这样它就可以将每个局部变量的访问转换为一个适当的字节码,以便从槽中读写。在
执行
from some_module import *
操作时,无法提前知道导入的确切名称。它取决于some_module
它定义了什么名称(如果它有__all__
,则将其放入__all__
)。这意味着编译器无法提前看到名称并将每个名称分配给插槽。在顶层导入时,事先不知道名称不是问题,因为每个name
/object
对只会添加到模块的globals
字典中。在要使代码正常工作,您要么只需要导入模块(并以属性的形式访问模块的内容),要么可以显式地命名要从中导入的项。哪一个最好取决于你的品味(也许还有你需要从模块中取多少个不同的名字)。在
我不知道你到底需要从你的
i2c_helper_whatever
模块中得到什么,所以我不能给出一个显式列出的名称的例子,但是这里有一个例子,它在一个常规的import
上使用一个as
子句来给任何被选中的模块提供相同的名称(在本地命名空间中)(我不知道我选择的名称是否正确,自己判断):这意味着您不能在类、函数或其他内部使用
from module import *
。将它们移到文件的顶部。在相关问题 更多 >
编程相关推荐