Frage zur OOP-Terminologie

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Dienstag 29. April 2008, 20:34

Was ist die korrekte Bezeichnung für das, was rechts des Gleichheitszeichens steht?

Code: Alles auswählen

myobj = MyClass()
Sagt man da "Klassenaufruf"?
"Klasse" allein dürfte nicht zutreffen, "Konstruktor" ist ja auch nicht die richtige Vokabel in Python, wenn ich es richtig verstanden habe.
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Dienstag 29. April 2008, 21:02

Das ist lediglich ein Call / Aufruf.

Python unterscheidet nicht zwischen Klassen, Funktionen und sonstigen Callables. Bei anderen Sprachen würde man wohl von Instanzierung sprechen.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
BlackJack

Dienstag 29. April 2008, 21:14

Ich würde auch sagen da "wird die Klasse aufgerufen".
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Dienstag 29. April 2008, 21:18

Danke, hat geholfen!
AlArenal
User
Beiträge: 23
Registriert: Sonntag 27. April 2008, 00:53
Wohnort: Iserlohn
Kontaktdaten:

Mittwoch 30. April 2008, 09:52

BlackJack hat geschrieben:Ich würde auch sagen da "wird die Klasse aufgerufen".
Eigentlich wird eine Instanz der Klasse erzeugt und zugewiesen.
"Ein schwarzes Loch hat keine Haare" - John A. Wheeler
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Mittwoch 30. April 2008, 10:04

Es wird ein Exemplar einer Klasse erzeugt ;)

Da wir alle aber nur aufgrund von Konventionen vermuten, dass die globale Variable "MyClass" ein Klassenobjekt enthält, wäre es IMHO ausreichend von einem "Aufruf" zu spechen (englisch "call" oder auch gerne "application" genannt).

Stefan
BlackJack

Mittwoch 30. April 2008, 10:28

@AlArenal: Selbst wenn an den Namen `MyClass` den Konventionen folgend ein Objekt/Exemplar vom Typ `classobj` oder `type` gebunden sein sollte, kann es immer noch sein, dass dort `__new__()` implementiert ist. Da muss also nicht zwangsläufig ein neues Exemplar erzeugt werden. :-)

Wirklich sicher kann man nur sagen, das auf der rechten Seite ein Name steht, der an ein Objekt gebunden ist, das aufgerufen wird.
AlArenal
User
Beiträge: 23
Registriert: Sonntag 27. April 2008, 00:53
Wohnort: Iserlohn
Kontaktdaten:

Mittwoch 30. April 2008, 10:31

Danke BlackJack, ich werds mir in einer ruhigen Stunde mal anlesen. Derzeit bin ich noch etwas Java-verseucht ;-)
"Ein schwarzes Loch hat keine Haare" - John A. Wheeler
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Mittwoch 30. April 2008, 14:11

Was hier passiert, war mir schon klar, und ob man es Instanz oder Exemplar oder Objekt nennt - dazu gibt es schon mindestens einen Thread - wollte ich auch nicht (erneut) in die Diskussion werfen.
Mir ging es nur um eine richtige Benennung der rechten Seite und da scheint mir "Klassenaufruf" (ja, MyClass ist ein Klassenobjekt!) doch das Treffendste zu sein.
lunar

Mittwoch 30. April 2008, 14:16

BlackJack hat geschrieben:@AlArenal: Selbst wenn an den Namen `MyClass` den Konventionen folgend ein Objekt/Exemplar vom Typ `classobj` oder `type` gebunden sein sollte, kann es immer noch sein, dass dort `__new__()` implementiert ist. Da muss also nicht zwangsläufig ein neues Exemplar erzeugt werden. :-)

Wirklich sicher kann man nur sagen, das auf der rechten Seite ein Name steht, der an ein Objekt gebunden ist, das aufgerufen wird.
Natürlich muss man dir hier recht geben (was anderes bleibt ja nicht übrig, kürzlich habe ich ja gelernt, dass du per definitionem keine Fehler machst ;) ).

Dennoch würde ich den Begriff Instanzierung an dieser Stelle nicht als "falsch" ansehen. Sicher, Java, C# und C++ sind nicht das Maß der Welt, nur ist deren Auffassung von OOP relativ weit verbreitet, insofern schadet es nicht, auch die Termini dieser objektorientierten Welt zu kennen, und sei es nur, um den Java-Jüngern im Gespräch nicht völlig den Kopf kirre zu machen ;)
BlackJack

Mittwoch 30. April 2008, 20:39

Das macht aber soooon Spaaasss :twisted:
Antworten