2024-05-01 22:04:59 发布
网友
我在用婴儿车。在我的代码中,PRAW中类的实例在模块中声明并返回。我是否必须导入主模块中的类或PRAW才能使用其子方法和变量
简单的回答是“不”
如果您有某个类的实例,那么该类的定义已经存在于Python进程中的某个地方—如果它是在一个模块中定义的(与使用type动态构造的相反),那么该模块是在其他地方导入的,并且可以在那里找到该类定义
type
Python中的“import”机制非常有效,因此如果您确实导入了一个尚未加载到当前进程中的模块,那么它的代码将实际运行。之后,对该模块的引用保存在中央注册表中,该注册表在sys.modules字典(即sys模块中的普通字典)中公开
sys.modules
sys
每当发生新的模块导入,或者从已经存在的模块中进行名称导入时,Python所做的只是在导入发生的范围内分配一个变量,引用内存中已经存在的对象—因此,“已知”对象上的import只是一个赋值,与“=”符号执行的操作完全相同
import
但是当你有一个类的实例时,它已经包含了对它的类的引用,没有必要把它带到当前的命名空间中(该引用位于实例的__class__属性上
__class__
简单的回答是“不”
如果您有某个类的实例,那么该类的定义已经存在于Python进程中的某个地方—如果它是在一个模块中定义的(与使用
type
动态构造的相反),那么该模块是在其他地方导入的,并且可以在那里找到该类定义Python中的“import”机制非常有效,因此如果您确实导入了一个尚未加载到当前进程中的模块,那么它的代码将实际运行。之后,对该模块的引用保存在中央注册表中,该注册表在
sys.modules
字典(即sys
模块中的普通字典)中公开每当发生新的模块导入,或者从已经存在的模块中进行名称导入时,Python所做的只是在导入发生的范围内分配一个变量,引用内存中已经存在的对象—因此,“已知”对象上的
import
只是一个赋值,与“=”符号执行的操作完全相同但是当你有一个类的实例时,它已经包含了对它的类的引用,没有必要把它带到当前的命名空间中(该引用位于实例的
__class__
属性上相关问题 更多 >
编程相关推荐