如何从不同的文件继承类?

新手上路,请多包涵

我有两个文件:

图.py

 import math
PI=math.pi

class Fig:
    def __init__(self):
        self.name= " "

圆.py

 class Circle(Fig):
    def __init__(self, radius):
        self.name= "Circle"
        self.data= ["Radius: ", radius]

但是每当我尝试 jupyter-notebook 抛出错误时,我都会尝试加载它们:

NameError: 名称 ‘Fig’ 未定义

我试过在 circle.py 的开头使用 import fig 但它不起作用,运行这两个文件也没有。它们都在同一个目录中。

原文由 D1X 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 658
2 个回答

好吧,目前还不清楚出了什么问题,因为您没有准确地向我们发送您正在做的事情,但这是我的猜测。如果你的 circle.py 文件如下

import fig
class Circle(Fig):
    def __init__(self, radius):
        self.name= "Circle"
        self.data= ["Radius: ", radius]

这会中断,因为 python 不知道在哪里可以找到 Fig 。相反,如果你写

import fig
class Circle(fig.Fig):
    def __init__(self, radius):
        self.name= "Circle"
        self.data= ["Radius: ", radius]

或者

from fig import Fig
class Circle(Fig):
    def __init__(self, radius):
        self.name= "Circle"
        self.data= ["Radius: ", radius]

一切都应该工作正常。这是因为您要么必须告诉 python 可以访问该类的名称空间(我的第一个解决方案),要么显式导入该类(我的第二个解决方案)。如果您想使用 PI ,同样的逻辑适用:

 import fig
class Circle(fig.Fig):
    def __init__(self, radius):
        self.name= "Circle"
        self.data= ["Radius: ", radius]
        #use PI from fig.py by informing python of namespace
        self.circumference = 2.*fig.PI*radius

或者

from fig import Fig, PI
class Circle(fig):
    def __init__(self, radius):
        self.name= "Circle"
        self.data= ["Radius: ", radius]
        #PI is now explicitly imported so don't need namespace
        self.circumference = 2.*PI*radius

原文由 Angus Williams 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题