D1X*_*D1X 7 python inheritance jupyter-notebook
我有两个文件:
fig.py
import math
PI=math.pi
class Fig:
def __init__(self):
self.name= " "
Run Code Online (Sandbox Code Playgroud)
和
circle.py
class Circle(Fig):
def __init__(self, radius):
self.name= "Circle"
self.data= ["Radius: ", radius]
Run Code Online (Sandbox Code Playgroud)
但我试图加载它我每当我尝试它jupyter-notebook抛出错误:
NameError:名称'Fig'未定义
我尝试import fig在circle.py的开头使用它并不起作用,也没有运行这两个文件.它们都在同一目录中.
Ang*_*ams 12
好吧,不清楚是什么问题,因为你没有准确地发送给我们你正在做的事情,但这是我的猜测.如果您的circle.py文件如下
import fig
class Circle(Fig):
def __init__(self, radius):
self.name= "Circle"
self.data= ["Radius: ", radius]
Run Code Online (Sandbox Code Playgroud)
这会破坏因为python不知道在哪里找到Fig.相反,如果你写
import fig
class Circle(fig.Fig):
def __init__(self, radius):
self.name= "Circle"
self.data= ["Radius: ", radius]
Run Code Online (Sandbox Code Playgroud)
要么
from fig import Fig
class Circle(Fig):
def __init__(self, radius):
self.name= "Circle"
self.data= ["Radius: ", radius]
Run Code Online (Sandbox Code Playgroud)
一切都应该工作正常.这是因为您要么告诉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
Run Code Online (Sandbox Code Playgroud)
要么
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14420 次 |
| 最近记录: |