Interfaces Frage

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
òÓ
User
Beiträge: 3
Registriert: Montag 22. März 2010, 15:49

Hallo Zusammen,

wie Ihr sicher sehen könnt bin ich neu in dem Forum. Ich bin grade dabei mich mit Python auseinander zu setzten. Dabei habe ich zur Zeit ein Problem mit dem Verständniss von Interfaces.


Ich habe auf http://docs.zope.org/zope2/zdgbook/Comp ... faces.html eine Doku zu dem Thema gefunden. Jedoch habe ich da ein paar verständinss porbleme.

Code: Alles auswählen

from zope.interface import Interface
from zope.interface import implements

class IHello(Interface):
    """The Hello interface provides greetings."""

    def hello(name):
        """Say hello to the name"""

class HelloComponent(object):

    implements(IHello)

    def hello(self, name):
        return "hello %s!" % name
Ich habe ein Interfaces IHello und eine Classe HelloComponenten welche das Interface implementiert. Soweit habe ich das verstanden.
Aber wie rufe ich jetzt das Interface auf und übergebe an "def hello" den namen.
Denn wenn ich das richtig sehe wird das Interface als schnittstelle zwischen dem Aufruf an der Stelle X und der HellComponenten gesehen.

Ich hoffe Ihr könnt mir da helfen.

MFG

òÓ
lunar

Python hat keine Interfaces. zope.interface ist keinesfalls Teil von "Python", sondern gehört zu Zope, einem Webanwendungsserver für Python.

Wenn Du keine Zope-Anwendungen schreibst, brauchst Du zope.interface nicht. Da Python dynamisch typisiert ist, sind Interface-Typen wie in Java im Allgemeinen überflüssig.
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Um es nochmal anders zu sagen: Zope ist zwar in Python geschrieben, aber eher "unpythonisch", indem es versucht, sowas wie J2EE zu sein. Um einen guten Einstieg in Python zu finden empfiehlt sich zuallererst das Tutorial.
òÓ
User
Beiträge: 3
Registriert: Montag 22. März 2010, 15:49

Super Dank euch. Da war ich dann was zu schnell mit Mr. Google :wink:
lunar

Wie kommst Du überhaupt auf zope.interfaces?
òÓ
User
Beiträge: 3
Registriert: Montag 22. März 2010, 15:49

habe einfach nach Python Interfaces gegooglet. Da hat der mir das ausgespuckt.
lunar

Ich meinte eigentlich, wie Du überhaupt darauf kommst, nach "Interfaces" zu suchen?

Denn wie gesagt, da Python eine dynamisch typisierte Sprache ist, sind Interfaces in Python eine eher exotische Idee und nur selten sinnvoll.
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

Probieren wir das mit Google einfach nochmal. Auf jeden Fall viel Spaß mit Python :D
lunar

@gkuhl: Er wurde schon auf das Tutorial verwiesen, Du musst das jetzt nicht noch breit treten. Es gibt bessere Gelegenheiten, lmgtfy.com anzubringen ;)
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Gab es nicht mal die Idee in Python3 Interfaces einzuführen? Wenn nein, womit verwechsel ich das grad?
BlackJack

@Hyperion: Verwechelst Du es eventuell mit "abstract base classes"?
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

lunar hat geschrieben:Denn wie gesagt, da Python eine dynamisch typisierte Sprache ist, sind Interfaces in Python eine eher exotische Idee und nur selten sinnvoll.
Das ist nicht richtig. Interfaces(sprich: Schnittstellen) finden sich in Python überall wieder. Nur dass man sie nicht explizit definieren muss. Die Zope-Doku beschreibt auch wozu die zope.Interfaces gedacht sind. Interfaces explizit zu beschreiben ist weder eine exotische Idee noch ist es „unpythonisch“.
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

BlackJack hat geschrieben:@Hyperion: Verwechelst Du es eventuell mit "abstract base classes"?
abc gibt es schon in 2.6 ;)
„Lieber von den Richtigen kritisiert als von den Falschen gelobt werden.“
Gerhard Kocher

http://ms4py.org/
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Darii hat geschrieben:Die Zope-Doku beschreibt auch wozu die zope.Interfaces gedacht sind. Interfaces explizit zu beschreiben ist weder eine exotische Idee noch ist es „unpythonisch“.
Danke für den Link! Irgendwie ist es schon ein Reflex bei mir geworden, bei allem wo "Zope" draufsteht, "Bäh!" zu denken. :(
lunar

@Darii: Mein Gott … was genau hast Du an "wie in Java" nicht verstanden?

Also nochmal: Konkrete Schnittstellentypen sind in Python eher ungewöhnlich und nicht sonderlich üblich. Das Konzept einer Schnittstellen gibt es natürlich in jeder Sprache. Die Python-Dokumentation allerdings spricht bei Schnittstellenvereinbarungen von einem „Protokoll“, daher dachte ich, „Interfaces“ wäre klar genug. Offenbar habe ich mich getäuscht.

Und ich gestehe auch offiziell ein, dass Du natürlich recht hast (falls es Dir darum ging).
Antworten