Seite 1 von 1

Interfaces Frage

Verfasst: Montag 22. März 2010, 15:54
von òÓ
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

òÓ

Verfasst: Montag 22. März 2010, 16:20
von 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.

Verfasst: Montag 22. März 2010, 16:28
von mkesper
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.

Verfasst: Montag 22. März 2010, 16:35
von òÓ
Super Dank euch. Da war ich dann was zu schnell mit Mr. Google :wink:

Verfasst: Montag 22. März 2010, 16:39
von lunar
Wie kommst Du überhaupt auf zope.interfaces?

Verfasst: Montag 22. März 2010, 16:48
von òÓ
habe einfach nach Python Interfaces gegooglet. Da hat der mir das ausgespuckt.

Verfasst: Montag 22. März 2010, 16:53
von 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.

Verfasst: Montag 22. März 2010, 16:56
von gkuhl
Probieren wir das mit Google einfach nochmal. Auf jeden Fall viel Spaß mit Python :D

Verfasst: Montag 22. März 2010, 17:00
von lunar
@gkuhl: Er wurde schon auf das Tutorial verwiesen, Du musst das jetzt nicht noch breit treten. Es gibt bessere Gelegenheiten, lmgtfy.com anzubringen ;)

Verfasst: Montag 22. März 2010, 20:08
von Hyperion
Gab es nicht mal die Idee in Python3 Interfaces einzuführen? Wenn nein, womit verwechsel ich das grad?

Verfasst: Montag 22. März 2010, 20:21
von BlackJack
@Hyperion: Verwechelst Du es eventuell mit "abstract base classes"?

Verfasst: Montag 22. März 2010, 21:04
von Darii
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“.

Verfasst: Montag 22. März 2010, 22:33
von ms4py
BlackJack hat geschrieben:@Hyperion: Verwechelst Du es eventuell mit "abstract base classes"?
abc gibt es schon in 2.6 ;)

Verfasst: Dienstag 23. März 2010, 08:51
von mkesper
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. :(

Verfasst: Dienstag 23. März 2010, 14:26
von 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).