Skip to main content

Hinweise zur .NET API-Dokumentation für Python-Programmierer

Die aktuelle Vorabversion der Skript-Schnittstellen-Dokumentation wurde automatisch aus den zugrundeliegenden .NET/C#-Quellen generiert. Somit enthält die Dokumentation einige Ausdrücke, die Python-Programmierern nicht geläufig sind. Der folgende Überblick gibt Ihnen einige Hinweise, wie diese Ausdrücke in der Python-Denkweise zu verstehen sind.

  • Interfaces sind eine Art von Vertrag darüber, welche Member (Methoden, Properties) die Instanzen derjenigen Klassen bereitstellen müssen, die die Interfaces implementieren. Sie können in IronPython in einer Klasse ein oder mehrere .NET-Interfaces implementieren, indem Sie von ihnen wie von Oberklassen ableiten. Sollte eine für die Schnittstelle benötigte Methode in der Klassendefinition nicht vorhanden sein, wird eine entsprechende Exception ausgegeben. (Das Beispiel DeviceImportFromSvn.py zeigt eine Klasse, die das ImportReporter Interface implementiert.)

  • Jeder Parameter und jede Methode in .NET sind streng typisiert. Dabei steht der Typ eines Parameters durch Leerzeichen getrennt vor dem Namen des Parameters, und der Typ des Rückgabewertes einer Methode vor dem Namen der Methode. Sie können Instanzen von Unterklassen verwenden, wenn Sie eine Klasse (oder Interface) angeben. Eine Methode ohne Rückgabewert ist durch void gekennzeichnet.

  • Sie können Methoden überladen. Somit können an einer Klasse mehrere Methoden mit demselben Namen existieren – diese müssen sich dann allerdings in der Anzahl und/oder den Typen der Parameter unterscheiden. IronPython kümmert sich automatisch darum, dass die passendste Überladung der Methode aufgerufen wird.

  • Der Datentyp int entspricht einer ganzen Zahl von -2 147 483 648 bis einschließlich 2 147 483 647.

    Der Datentyp bool entspricht dem Python-Typ bool (True und False).

    Der Datentyp string den Python-Typen str oder unicode, welche in IronPython identisch sind.

    Der Datentyp IDictionary<Object, Object> entspricht einem ganz normalen Python Dictionary. IronPython wandelt automatisch zwischen den Python- und .NET-Datentypen um.

  • Wenn ein Typ T von IBaseObject<T> abgeleitet ist, bedeutet das, dass dieser Typ von anderen Plug-ins um zusätzliche Member erweitert werden kann. Die tatsächliche Benutzung dieses erweiterten Typs als Parameter oder Rückgabewert wird durch IExtendedObject<T> markiert.

  • Die Kennzeichnung IEnumerable<T> an einem Typen T bedeutet, dass Sie jede Python-Sequenz (Generator, Listen, Tupel…), die Werte vom Typ T (oder einer Unterklasse) zurück liefert, benützen können. Liefert die Sequenz inkompatible Objekte zurück, wird zur Laufzeit eine entsprechende Exception ausgegeben.

  • Die Kennzeichnung IList<T> an einem Typen T kennzeichnet eine typisierte Liste, die garantiert nur Elemente vom Typ T (oder einer Unterklasse) enthält. Beim Versuch, ein inkompatibles Objekt hinzuzufügen, wird zur Laufzeit eine entsprechende Exception ausgegeben.

  • Die Kennzeichnung params T[] name an einem Parameter vom Typ T entspricht dem Python-Mechanismus *name für variable Argumentlisten.

  • Enumerationen (Aufzählungstypen, enum) existieren in Python nicht als Sprachkonstrukt. Ihr Zweck ist es, für einen bestimmten Zweck eine genau definierte Mengen von konstanten Werten abzubilden, zum Beispiel die Tage einer Woche. Der Zugriff auf .NET-Enumerationen aus Ironpython funktioniert über Name.Member, also zum Beispiel über OnlineChangeOption.Try.

    Es gibt auch verschiedene Ansätze, Enums in Python nachzubilden.

    Siehe zum Beispiel http://pypi.python.org/pypi/enum/

  • Die Syntax T name { get; set; } definiert eine Eigenschaft (Property) mit dem Namen name und dem Typ T. Wenn das set; fehlt, ist die Eigenschaft nur lesbar. Das entsprechende Konstrukt in Python ist der @property Decorator.