J'ai deux fichiers:
fig.py
import math
PI=math.pi
class Fig:
def __init__(self):
self.name= " "
Et
cercle.py
class Circle(Fig):
def __init__(self, radius):
self.name= "Circle"
self.data= ["Radius: ", radius]
Mais j'essaie de les charger chaque fois que je l'essaie jupyter-notebook jette l'erreur:
NameError: le nom 'Fig' n'est pas défini
J'ai essayé d'utiliser import fig
au début de circle.py et cela ne fonctionne pas, ni l'exécution des deux fichiers. Ils sont tous deux dans le même répertoire.
Ok, on ne sait pas très bien ce qui ne va pas parce que vous ne nous avez pas envoyé ce que vous faites, mais voici ce que je suppose. Si votre fichier circle.py
est comme suit
import fig
class Circle(Fig):
def __init__(self, radius):
self.name= "Circle"
self.data= ["Radius: ", radius]
Cela va casser parce que python ne sait pas où trouver Fig
. Si vous écrivez à la place
import fig
class Circle(fig.Fig):
def __init__(self, radius):
self.name= "Circle"
self.data= ["Radius: ", radius]
ou
from fig import Fig
class Circle(Fig):
def __init__(self, radius):
self.name= "Circle"
self.data= ["Radius: ", radius]
Tout devrait bien fonctionner. En effet, vous devez soit indiquer à python l’espace de nom à travers lequel il peut accéder à la classe (ma première solution), soit l’importer explicitement (ma deuxième solution). La même logique s'applique si vous souhaitez utiliser 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
ou
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
Vous devez faire from fig import FIG
dans votre circle.py . Assurez-vous également que le fichier __init__.py
est présent dans le dossier contenant circle.py et fig.py .
Veuillez aussi regarder:
Vous devez importer la classe Fig
à partir de fig.py
dans circle.py
.
Si vous importez simplement le module fig
, vous devez accéder à la classe Fig
via l'espace de noms respectif:
class Circle(fig.Fig):
<snip>
Si vous souhaitez utiliser directement le nom de la classe, importez-le à l'aide de from fig import Fig
.