Python - nom global n'est pas défini lors de l'appel de fonction à partir de la classe de __init__ de la méthode

Je suis nouveau sur le Python et de travailler sur une classe pour le stockage des données significatives morceaux sur les livres. J'ai démarré comme suit:

 class BookDisplay: 

     def __init__(self, _name, _isbn, _price, _picture, _link):
      self.name =    _name
      self.isbn =    _isbn
      self.price =   _price
      self.picture = _picture
      self.link =    _link
      self.xmlString = MakeXMLString(_name, _isbn, _price, _picture, _link)                    

    name = ""
    isbn = ""
    price = 0.0
    picture = ""  #a URL
    link = "" 

    xmlString = ""

Je pensais que ce __init__ méthode serait tout simplement être en mesure d'appeler MakeXMLString, lequel j'ai défini dans le même fichier (bookdisplay.py), juste en dessous de la BookDisplay classe:

  def MakeXMLString(_name, _isbn, _price, _picture, _link): #python multi-line syntax  
    xmlString = "<name>" + _name + "</name>" \
                     + "<isbn>" + _isbn + "</isbn>" \
                     + "<price>" + str(_price) + "</price>" \
                     + "<picture>" + _picture + "</picture>" \
                     + "<link>" + _link + "</link>" 

    return xmlString 

À l'origine, j'ai effectivement eu MakeXMLString comme une méthode dans la classe, comme ceci:

 def MakeXMLString(self):  
    self.xmlString = "<name>" + self.name + "</name>" \
                     + "<isbn>" + self.isbn + "</isbn>" \
                     + "<price>" + str(self.price) + "</price>" \
                     + "<picture>" + self.picture + "</picture>" \
                     + "<link>" + self.link + "</link>" 

Dans ce cas, __init__ contenu de cet appel:

self.xmlString = self.MakeXMLString()

Dans les deux cas, lorsque vous essayez d'instancier BookDisplay à partir d'un autre fichier:

from bookdisplay import BookDisplay
...
...
thumbnails = []
...
thumbnails.append(BookDisplay(titleField, "-1", float(priceField), imgField, linkField))

...J'ai le nom global d'erreur (ce traceback en particulier pour le pas-dans-classe de fonction):

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "search.py", line 30, in ebaySearch
    handleDocument(doc)
  File "search.py", line 59, in handleDocument
    handleItems(items, outputFile)
  File "search.py", line 102, in handleItems
    thumbnails.append(BookDisplay(titleField, "-1", float(priceField), imgField, linkField))
  File "bookdisplay.py", line 15, in __init__
    self.xmlString = MakeXMLString(_name, _isbn, _price, _picture, _link) 
NameError: global name 'MakeXMLString' is not defined

Ce qui me manque ici? À partir de ce que je peux dire, MakeXMLString est parfaitement accessible à la classe.

OriginalL'auteur nicole | 2013-04-30