Python 继承 - 名称未定义

2 投票
1 回答
4933 浏览
提问于 2025-04-18 03:14

我有以下代码(为了清晰起见,做了简化):

face.py:

from frame import *

class Face(Frame):
    def hello(self):
        print 'hello'

frame.py:

from face import *

class Frame(object):
  def __init__(self, image):
    self.image = image

我遇到了以下错误:

Traceback (most recent call last):
  File "2.py", line 2, in <module>
    from frame import *
  File "/home/code/iris/frame.py", line 4, in <module>
    from face import *
  File "/home/code/iris/face.py", line 7, in <module>
    class Face(frame.Frame):
NameError: name 'frame' is not defined

我觉得这个错误可能和我以下两点有关:

  • 我设置“导入”的方式
  • 我设置类的方式

有没有人能告诉我我哪里做错了?另外,如果有人能解释一下“导入”在哪里是必要的,那就太好了!

谢谢!

克里斯。

1 个回答

3

你现在遇到了一个循环依赖的问题。你的“脸部”类依赖于“框架”类,而“框架”类又依赖于“脸部”类,这样就形成了一个死锁的情况。可以参考一下这个链接:如何处理Python模块中的循环依赖?

在Python中,有几种方法可以解决这个问题: 好的方法:重构你的代码,避免使用循环导入。 不好的方法:把其中一个导入语句移动到不同的作用域。

撰写回答