Python-Instanz hat keine __call__ - Methode

Habe ich gelernt, wie man Python für die bessere Teil von heute, nachdem er bis auf einen hässlichen bash-Skript.

Ich versuche, die 2 Klassen zu definieren, die ein paar von arrays von Objekten, in denen zu speichern, einige einzigartige strings und zahlen (1-10). Die Objekte bestehen aus den folgenden:

object[i].user
         .n     # n = i
         .name
         .coords
         .hero

(param1, param2, param3) wird anders sein für jedes Objekt.n und Objekt.Nutzer, so dass ich versuche, eine Zuweisung, die nicht Aussehen wie Müll, nachdem er 90 einzigartige Zeichenfolgen. Verschachtelung ein Beispiel habe ich gefunden, hat nicht funktioniert, hier also der Kompromiss:

class CityBean:
    def __init__(self,name,coords,hero):
        self.name = name
        self.coords = coords
        self.hero = hero

class Castles:
    def __init__(self,user,n):
        self.user = user
        self.n = n
        if self.user == 'user1':
            temp = {
                1:  CityBean( "name1"  , "coord1" , "hero1"),
                ... blah blah blah
                10: CityBean( "name10" , "coord10" , "hero10" )}[self.n]()
        if self.user == 'user2':
            temp = {
                1:  CityBean( "name11" , "coord11" , "hero11" ),
                ... blah blah blah
                10: CityBean( "name20" , "coord20" , "hero20" ) }[self.n]()
        if self.user == 'user3':
            temp = {
                1:  CityBean( "name21" , "coord21" , "hero21" ),
                ... blah blah blah
                10: CityBean( "name30" , "coord30" , "hero30" ) }[self.n]()
        self.name = temp.name
        self.coords = temp.coords
        self.hero = temp.coords
        __del__(temp)

Ich nenne es mit so etwas wie dies:

cities = list( Castles("user2",i) for i in range(1,11) )

Es gibt mir diese Fehlermeldung:

AttributeError: CityBean instance has no __call__ method

Und es macht diese Zeile:

                10: CityBean( "name20" , "coord20" , "hero20" ) }[self.n]() # pseudo
                10: CityBean( "" , "" , "" ) }[self.n]() # what is actually looks like

Was ist Los mit meinem cruddy Klassen? Bin ich etwas zurückgeblieben, nicht wahr?

  • Was wollen Sie erreichen mit [self.n]()?
  • Ich habe nur versucht, wählen Sie eine der Optionen, nicht ahnend, dass die Klammern bezeichnet das Ergebnis als Funktion... oops!
InformationsquelleAutor tyblu | 2010-02-22
Schreibe einen Kommentar