路径查找器协议就是为了支持模块和已初始化包的导入,也为了给命名空间包提供组成部分,路径条目查找器必须实现 find_spec() 方法。
find_spec() 接受两个参数,即要导入模块的完整限定名称,以及(可选的)目标模块。 find_spec() 返回模块的完全填充好的规格说明。 这个规格说明总是包含“加载器”集合(但有一个例外)。
为了向导入机制提示该规格说明代表一个命名空间 portion,路径条目查找器会将 "submodule_search_locations" 设为一个包含该部分的列表。
在 34 版更改: find_spec() 替代了 find_loader() 和 find_module(),后两者现在都已弃用,但会在 find_spec() 未定义时被使用。
较旧的路径条目查找器可能会实现这两个已弃用的方法中的一个而没有实现 find_spec()。 为保持向后兼容,这两个方法仍会被接受。 但是,如果在路径条目查找器上实现了 find_spec(),这两个遗留方法就会被忽略。
find_loader() 接受一个参数,即要导入模块的完整限定名称。 find_loader() 返回一个 2 元组,其中第一项是加载器而第二项是命名空间 portion。
为了向后兼容其他导入协议的实现,许多路径条目查找器也同样支持元路径查找器所支持的传统 find_module() 方法。 但是路径条目查找器 find_module() 方法的调用绝不会带有 path 参数(它们被期望记录来自对路径钩子初始调用的恰当路径信息)。
路径条目查找器的 find_module() 方法已弃用,因为它不允许路径条目查找器为命名空间包提供部分。 如果 find_loader() 和 find_module() 同时存在于一个路径条目查找器中,导入系统将总是调用 find_loader() 而不选择 find_module()。
以上就是关于Mac开发怎么获得程序内部文件的路径全部的内容,包括:Mac开发怎么获得程序内部文件的路径、新药从研发到上市需要经过哪些流程、小程序开发经验总结等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)