Hallo Leute,
ich bin wirklich ein Anfänger, und würde mich sehr freuen wenn einer von euch mir dabei hilft, und zwar:
Aufgabe-1: will allgemein zeigen wie eine Assoziation zwischen 2 Klassen in Python aussehen kann.
Aufgabe-2: wie kann man in Python ein Objekt aus einer Klasse erzeugen (inztanziieren).
Besten Dank im Voraus
Schnaki
Assoziation, Objet aus einer Klasse erzeugen!!!
Dann schau doch mal hier: http://Pythonwiki.de
Hallo, danke für den Typ, hab nicht erwartet das mir jemend die Aufgaben macht, will das verstehen, deswegen habe ich die Fragen auch konkret gestellet.
Nochmla danke für dein Typ und hoffe damit kann ich meine Aufgaben allein lösen
Nochmla danke für dein Typ und hoffe damit kann ich meine Aufgaben allein lösen
Hallo,EyDu hat geschrieben:Deine Hausaufgaben wird Dir hier sicher niemand machen. Schau doch mal ins Tutorial.
kannst du mir dann bitte sagen, ob das was ich gerade gebastelt habe, die Objektserzeugung aus einer Klassen entspricht:
"
class mustermann:
def __init__(self, alter=15, name="Max", groesse = 180):
self.alter = alter
self.name = name
self.groesse = groesse
"
Also meine Klasse heißt "mustermann", und mein Objekt wird dann aus "alter", "name" und "groesse" erzeugt oder, habe ich das falsch verstanden??
Bin ein neuling in Sachen Programmieren, und will es wirklich lernen, daher wäre ich dir sehr dankbar wenn du mir den richtigen Weg zeigen würdest.
Besten Dank
1. Solltest du den Code in [code=py]CODE[/code] setzen und 2. die Einrückung beim Posten beibehalten
Naja, du hast zwar eine Klasse (die nach kurzem Überfliegen auch korrekt sein dürfte), aber kein Klassenobjekt (Instanz) der Klasse.
Du musst die Klasse aufrufen, also eine Instanz (Oder Klassenobjekt wie du sagtest) zu erzeugen:
instanz = mustermann()
Aber am Besten liest du dir nochmal etwas zu OOP durch, damit dir das alles klar wird.
Naja, du hast zwar eine Klasse (die nach kurzem Überfliegen auch korrekt sein dürfte), aber kein Klassenobjekt (Instanz) der Klasse.
Du musst die Klasse aufrufen, also eine Instanz (Oder Klassenobjekt wie du sagtest) zu erzeugen:
instanz = mustermann()
Aber am Besten liest du dir nochmal etwas zu OOP durch, damit dir das alles klar wird.
Karl hat geschrieben:1. Solltest du den Code insetzen und 2. die Einrückung beim Posten beibehaltenCode: Alles auswählen
CODE
Naja, du hast zwar eine Klasse (die nach kurzem Überfliegen auch korrekt sein dürfte), aber kein Klassenobjekt (Instanz) der Klasse.
Du musst die Klasse aufrufen, also eine Instanz (Oder Klassenobjekt wie du sagtest) zu erzeugen:
instanz = mustermann()
Aber am Besten liest du dir nochmal etwas zu OOP durch, damit dir das alles klar wird.
Danke für die Antwort
Mal jetzt abgesehen von der Aufgabe:
Die Klasse nennst du Mustermann wieso?
Die Klasse repräsentiert nur eine einzige Person. Dann solltest du die Klasse einfach genauso nennen, `Person`. So wirkt das etwas verwirrend weil die Person jede beliebige sein kann. Selbst wenn die Klasse ursprünglich eine Familie repräsentieren sollte wäre Mustermann nicht wirklich richtig weil es eben jede beliebige Familie sein kann.
Solche Namen solltest du imho erst bei der Instanz verwenden.
Die Klasse nennst du Mustermann wieso?
Die Klasse repräsentiert nur eine einzige Person. Dann solltest du die Klasse einfach genauso nennen, `Person`. So wirkt das etwas verwirrend weil die Person jede beliebige sein kann. Selbst wenn die Klasse ursprünglich eine Familie repräsentieren sollte wäre Mustermann nicht wirklich richtig weil es eben jede beliebige Familie sein kann.
Solche Namen solltest du imho erst bei der Instanz verwenden.
So jezt habe ich das da gebastelt (dank eure Tips...THX):
Ich verstehe nicht so ganz was "(%r, %r)" genau macht? Kann mir jemend sag was es macht bitte?
Außerdem wenn ich den Code ausführe bekomme ich das hier:
eigentlich dachte ich ich werde als Ergebnis ==> person(20, "Sonja")
oder?
Danke nochmal für eure TIPPS
Code: Alles auswählen
>>> class person:
def __init__(self, alter=17, name= "Max"):
self.alter = alter
self.name = name
>>> def __repr__(self):
return self.__class__.__name__ + "(%r, %r)" % (self.alter, self.name)
>>> sonja=person(20,"Sonja")
Außerdem wenn ich den Code ausführe bekomme ich das hier:
Code: Alles auswählen
<__main__.person instance at 0x00D60378>
oder?
Danke nochmal für eure TIPPS
Die Einrückung ist so schon korrekt, zumindest wenn schnaki IDLE verwendet. Allerdings darfst man keine Leerzeilen einfügen, wenn man sich im interaktiven Modus befindet. Wenn du mit Klassen hermuspielst ist es vielleicht von Vorteil, den Code zu speichern und dann ausführst.
Edit:
Edit:
Code: Alles auswählen
class person:
def __init__(self, alter=17, name= "Max"):
self.alter = alter
self.name = name
def __repr__(self):
return self.__class__.__name__ + "(%r, %r)" % (self.alter, self.name)
sonja=person(20,"Sonja")
print sonja
Zuletzt geändert von EyDu am Samstag 5. Juli 2008, 23:37, insgesamt 2-mal geändert.
Sorry aber das habe ich jetzt nicht so ganz verstanden, was meinst du mit: "Die Methoden in deiner Klasse müssen stärker eingerückt sein als das Schlüsselwort `class`"??Pekh hat geschrieben:Auch im Interpreter mußt du korrekt einrücken. Die Methoden in deiner Klasse müssen stärker eingerückt sein als das Schlüsselwort `class`.
Danke
Er meint, dass du nicht richtig eingerückt hast, denn __repr__ ist bei dir eine eigenständige Funktion und gehört nicht zur Klasse.schnaki hat geschrieben:Sorry aber das habe ich jetzt nicht so ganz verstanden, was meinst du mit: "Die Methoden in deiner Klasse müssen stärker eingerückt sein als das Schlüsselwort `class`"??Pekh hat geschrieben:Auch im Interpreter mußt du korrekt einrücken. Die Methoden in deiner Klasse müssen stärker eingerückt sein als das Schlüsselwort `class`.
Danke
Wenn du Klassen schreiben willst, empfiehlt sich auch, den Editor anstatt die Shell zu benutzen.
OKAY Leute Danke euch, ihr seid spitze!!
Das mit dem zwischen speichern werde ich jetzt versuchen, hoffentlich klappt es.
Aber was ich immer noch nicht verstanden habe ist: was macht "(%r,%r)"?? Könnt ihr mir bitte das erklären??
Das mit dem zwischen speichern werde ich jetzt versuchen, hoffentlich klappt es.
Aber was ich immer noch nicht verstanden habe ist: was macht "(%r,%r)"?? Könnt ihr mir bitte das erklären??
Dir fehlen ganz offensichtlich noch wesentliche Grundlagen von Python, die du dir durch eigenständige Lektüre eines geeigneten Tutorials zunächst malschnaki hat geschrieben:Sorry aber das habe ich jetzt nicht so ganz verstanden, was meinst du mit: "Die Methoden in deiner Klasse müssen stärker eingerückt sein als das Schlüsselwort `class`"??
aneignen solltest.
Für "Klassen" z.B. das hier (veraltete Fassung, aber dafür auf deutsch und für die Basics aktuell genug; später kannst du ja noch die englische Fassung zur aktuellen Python-Version lesen ...):
http://starship.python.net/crew/gherman ... ode11.html