ipython og stille feil

stemmer
0

Jeg er ny på python og ipython, og får stille feil: Feil som ikke møter opp på konsollen med mindre jeg kjøre den i omfang. Kanskje jeg opp noe galt, men problemet er dette:

class test:
  def __init__(self):
    self.only_map = { 'a' : 1 }
  def run (self):
    print 'start'
    self.only_map['c'] = self.only_map['a'] + self.only_map['b']
    print 'done'

obj = test()
obj.run()

Dette skriver:

start

Det er ingen feil, og det virker som alt er ok. Men når jeg kjører det linje for linje, er feilen fanget:

self=obj
print 'start'
self.only_map['c'] = self.only_map['a'] + self.only_map['b']
print 'done'

Denne utskrifts:

start

KeyError: 'b'

Er det noen som har noen anelse om hvorfor dette skjer?

Publisert på 08/06/2015 klokken 02:56
kilden bruker
På andre språk...                            


1 svar

stemmer
0
  1. Du kan ha variabler som er lagret i minnet. exit()og restart
  2. Redigere i en teksteditor og lime inn med %pastekommandoen for å sørge for at du har ingen redigering problem
  3. Sjekk hva du har erklært som en variabel med %whos

Hvis alt annet mislykkes, kjøre koden under. Det vil skrive ut objekter av selfslik at du kan kontrollere at du ikke har noen feil ...

class test:
  def __init__(self):
    self.only_map = { 'a' : 1 }
  def run (self):
    print 'start'
    print self.__dict__
    self.only_map['c'] = self.only_map['a'] + self.only_map['b']
    print 'done'

obj = test()
obj.run()
Svarte 08/06/2015 kl. 04:18
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more