Python importlib 包里面有个 FileLoader 类

zxz · 2020年03月09日 · 最后由 zxz 回复于 2020年03月10日 · 2094 次阅读

其中的方法 load_module,使用了 super,return super(FileLoader, self).load_module(fullname),但是发现 FileLoader 没有父类呀,请高手告知下,这个什么意思?
代码如下:
class FileLoader:
  def_init_(self, fullname, path):
    self.name = fullname
    self.path = path

  def_eq_(self, other):
    return (self._class_ == other._class_ and
      self._dict_ == other._dict_)

  def\ _hash_(self):
    return hash(self.name) ^ hash(self.path)

   @__check_name
   def load*module(self, fullname):
    return super(FileLoader, self).load_module(fullname)

而且看到注释里面,建议使用 exec_module() 方法,但是找不到这个方法的代码,额

最佳回复
object
 +-- Finder (deprecated)
 |    +-- MetaPathFinder
 |    +-- PathEntryFinder
 +-- Loader
      +-- ResourceLoader --------+
      +-- InspectLoader          |
           +-- ExecutionLoader --+
                                 +-- FileLoader
                                 +-- SourceLoader
共收到 5 条回复 时间 点赞

虽然不懂这个,但是任何类都有父类,这个的父类是 Object,而且注释也告诉你了,换另外一个方法用,想知道具体原因你可以看看注释里的 Issue #14857 这个问题。

zxz #2 · 2020年03月09日 Author
Chen 回复

好的,谢谢,我去找下

没用过这个方法,跳转过去看看 load_module() 和装饰器。

object
 +-- Finder (deprecated)
 |    +-- MetaPathFinder
 |    +-- PathEntryFinder
 +-- Loader
      +-- ResourceLoader --------+
      +-- InspectLoader          |
           +-- ExecutionLoader --+
                                 +-- FileLoader
                                 +-- SourceLoader
zxz #5 · 2020年03月10日 Author

自己用了下这个包,试了一试,发现可以吧.py 生成 module 类,又学到了,谢谢各位

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册