【问题标题】:Python Modular InheritancePython 模块化继承
【发布时间】:2014-01-02 19:29:58
【问题描述】:

我正在尝试执行以下操作:

File 1:
  class x:
    def somefunc(self):
      # Some code
      ect...

File 2:
  import File 1
  # Inherits x
  class y(File1.x):
      # Some code
      ect...

但这会引发错误:

“名称'x'未定义”

编辑:将 x 更改为 File1.x。 还是不行

【问题讨论】:

  • 你需要在这里给我们适当的例外;您编辑的代码中将不再有NameError。
  • @Tracing 这有点疯狂,但您可能因为文件名中的空格而遇到问题?请参阅下面的答案,我对其进行了编辑以包含有关此的更多信息。

标签: python object inheritance module


【解决方案1】:

您需要执行from file1 import x 或class y(file1.x) 才能完成这项工作。

编辑:确保文件名中没有空格。也许这只是您的问题中的一个错字,但在 File2 的顶部,您说的是 import File 1 而不是 import File1。如果与 File1 对应的 Python 模块的名称确实包含一个或多个空格,则应在文件名和 import 语句中删除它们(或用下划线替换它们)。正如this question 的已接受答案中所解释的,文件名用作导入模块的标识符,Python 标识符不能包含空格。

【讨论】:

    【解决方案2】:

    您将 模块 导入到您的命名空间中; x 是模块的一个属性:

    import modulename
    
    class y(modulename.x):
    

    或者,使用from modulename import 语法将对象从 一个模块绑定到您的本地命名空间:

    from modulename import x
    
    class y(x):
    

    【讨论】:

      猜你喜欢
      • 2016-08-06
      • 2017-07-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      • 2016-06-24
      • 2020-06-27
      • 2018-02-25
      相关资源
      最近更新 更多