ich hatte mir vorgenommen zur Übung ein kleines Textadventure zu schreiben, muss aber leider schon ganz am Anfang verzweifeln.
Ich habe Gegenstände die natürlich Eigenschaften wie den Namen oder eine Beschreibung haben und von einer Klasse Gegenstand vererben. Leider klappt schon das Ausgeben dieser Eigenschaften zu Test nicht . Python sagt sie würden gar nicht existieren:
Traceback (most recent call last):
File "gegenstand.py", line 68, in ?
print Vase().GetBeschreibung()
File "gegenstand.py", line 20, in GetBeschreibung
return self.__Beschreibung
AttributeError: 'Vase' object has no attribute '_Gegenstand__Beschreibung
Da ich ziemlicher Python- und Programmieranfänger bin weiß ich da leider überhaupt nicht weiter.
Wisst ihr vielleicht, was da los ist?
hier der code:
Code: Alles auswählen
###imports###
import copy
##########
###die zusätzlich definierten Ausnahmen###
class SetExecption(Exception):
pass
#############################
###Oberklasse für alle Gegenstände###
class Gegenstand(object):
def __init__(self):
self.__Name = 'Gegenstand'
self.__Beschreibung = 'Beschreibung'
self.__KannEnthalten = {} #Objekte die enthalten sein dürfen
self.__Inhalt = {} #was drin ist, Keys sind die Namen, Values die Objekte
###Schnittstelle###
def GetName(self):
return self.__Name
def GetBeschreibung(self):
return self.__Beschreibung
def GetKannEnthalten(self):
return copy.copy(self.__KannEnthalten)
def GetInhalt(self):
return copy.copy(self.__Inhalt)
def SetInhalt(self,inhalt):
#wenn alle Objekte aus inhalt enthalten sein sein dürfen
#wird zugewiesen
if [x for x in inhalt.keys() if x in self.GetKannEnthalten.keys()] != inhalt: # x ist ein gegenstand
raise SetExeption
else:
self.__Inhalt = inhalt
def Dazu(self,gegenstandsstring):
self.SetInhalt[gegenstandsstring] = self.GetKannEnthalten(gegenstandsstring)()
###Klassen der Gegenstände###########
class Blume(Gegenstand):
def __init__(self):
self.__Name = 'Blume'
self.__Beschreibung = 'Eine herrliche Blume!'
self.__KannEnthalten = {}
self.__Inhalt = {}
class Vase(Gegenstand):
def __init__(self):
self.__Name = 'Vase'
self.__Beschreibung = 'Eine schoen anzusehende Vase'
self.__KannEnthalten = {'Blume':Blume}
self.__Inhalt = {}
class Tisch(Gegenstand):
def __init__(self):
self.__Name = 'Tische'
self.__Beschreibung = 'Eine flacher Tisch.'
self.__KannEnthalten = {Vase:'Vase','Blume':Blume}
class Raum:
def __init__(self,objekte,ausgaenge,beschreibung=''): #obekte sei Dictionary
self.__objekte = objekte
self.__ausgaenge = {'rechts':None,'links':None,vorne:None,hinten:None}
self.__beschreibung = beschreibung
def ausgabe(self):
S = '' #hier kommen die Objekte im raum rein
for schluessel in Objekte:
S = S + schluessel
return "Ein Raum mit folgenden Gegenständen darin %s \n %s" % (S,Beschreibung)
#####################################
print Vase().GetBeschreibung()