У меня проблема с объектом, который я создал, а затем использую в функции.Почему мой объект исчезает?
class environnement:
def __init__(self, n, dic={}, listr=[], listf=[]):
self.taille=n
self.reg=dict(dic)
self.raccess=listr
self.faccess=listf
Сначала я создать среду, в моей функции compilProgram
, а затем я использую compilInstruction
с этим Environnement:
def compilProgram(fichierSortie, nbrRegDispo, AST):
DICOFUN={}
for elt in AST.children:
if elt.type=='fonctionDef':
DICOFUN[elt.leaf]=elt.children
continue
else :
pass
env=environnement(nbrRegDispo)
print(type(env))
compteurLabel=0
for elt in AST.children:
if elt.type!='fonctionDef':
(env, compteurLabel)=compilInstruction(env, fichierSortie, elt, compteurLabel)
Печать на compilProgram
, чтобы проверить, что env
, прежде чем я дать ему compilInstruction
(потому что У меня проблема).
def compilInstruction(env, fichierSortie, instruction,compteurLabel):
print(type(env))
envInterne=environnement(env.taille, env.reg, env.raccess, env.faccess)
...
Я стараюсь много другого способа скопировать env
, но проблема, кажется, не от него. Вот что я получаю, когда я пытаюсь compilProgram
на propers аргументы:
<class 'Environnement.environnement'> (this is the print from compilProgram)
<class 'Environnement.environnement'> (this is the print from compilInstruction)
<class 'NoneType'> (this again comes from the print in compilInstruction)
...
AttributeError: 'NoneType' object has no attribute 'taille'
Почему печать в compilInstruction
перспективе в два раза, и почему env
исчезает между двумя отрезками?
Не связанный с вами вопрос, но вы обязательно столкнетесь с этой проблемой: [«Наименьшее удивление» в Python: разрешимый аргумент по умолчанию] (http://stackoverflow.com/q/1132941/395760) – delnan