我有两个文件:
fig.py
import math
PI=math.pi
class Fig:
def __init__(self):
self.name= " "
并且
circle.py
class Circle(Fig):
def __init__(self, radius):
self.name= "Circle"
self.data= ["Radius: ", radius]
但是我试图加载它们每当我尝试它时 jupyter-notebook 会抛出错误:
NameError:名称'Fig'未定义
我尝试在 circle.py 的开头使用import fig
但它不起作用,也没有运行这两个文件。它们都在同一目录中。
答案 0 :(得分:11)
好吧,由于你还没有准确地发送给我们你正在做的事情,但不清楚是什么出错了,但这是我的猜测。如果您的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
答案 1 :(得分:2)
您需要在 circle.py 中执行from fig import FIG
。另外,请确保文件夹中包含<{em> circle.py 和 fig.py 的__init__.py
文件。
请同时查看:
答案 2 :(得分:0)
您需要从Fig
的{{1}}导入课程fig.py
。
如果您只是导入模块circle.py
,则必须通过相应的命名空间访问类fig
:
Fig
如果您想直接使用班级名称,请使用class Circle(fig.Fig):
<snip>
。
答案 3 :(得分:0)
from packagename.fig import Fig
class Circle(Fig):
def __init__(self, radius):
self.name = "Circle"
self.data = ["Radius: ", radius]
packagename
是您的实际包裹名称。