2012-05-18 5 views
10
#Maps.py 
class Maps(object): 

    def __init__(self): 
     self.animals = [] 
     self.currently_occupied = {} 

    def add_animal(self, name): 
     self.animals.append(name) 
     self.currently_occupied = {robot:[0, 0]} 



#animal.py 
class Animal(object): 

    def __init__(self, name): 
     import maps 
     maps.add_animal(rbt) 
     self.name = name 


#Tproject.py 
from Animal import Animal 
Fred = Animal("Fred") 

gibt mir diesen einen Fehler, wie dieseungebundene Methode mit Instanz als erstes Argument String bekam erfordert aber etwas anderes

Typeerror aussieht: mit Karten Instanz ungebundene Methode add_animal() als erstes Argument aufgerufen werden muss (GOT str Instanz statt)

aber ich weiß nicht, was es bedeutet, und ich kann es nicht durch google oder yahoo Suche herauszufinden :(

+0

Als Faustregel gilt, dass Importe möglichst im Modulbereich erfolgen sollten. Sie benötigen auch die Maps-Klasse aus dem Kartenmodul, nicht das Modul selbst (also maps.Maps). – TryPyPy

Antwort

13

Sie benötigen eine Instanz von Karten, nicht die Karten Klasse:

maps.Maps.add_animal("Fred") # gives error 

mymap = maps.Map() 

mymap.add_animal("Fred") # should work 

So sollten Sie entweder ein mymap Attribut auf der Animal-Klasse haben, pro Tier-Instanz oder als globales Objekt (was auch immer am besten für Ihre Werke Fall).

3

Sie fordern ein ungebundenes Methode, dh Sie eine Methode aus einer Klasse zuzugreifst selbst, und nicht durch ein instan ce (Python weiß also nicht, welche Instanz als self verwendet werden soll). Dieser Code sollte nicht diesen Fehler geben, wie gezeigt, aber ich nehme an, Sie so etwas wie

maps.Maps.add_animal(rbt) 

tun Es ist nicht klar, was Sie zu tun versuchen, oder ich würde einen Vorschlag geben, wie zu beheben es.

Verwandte Themen