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 dasImportReporter
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-Typbool
(True
undFalse
).Der Datentyp
string
den Python-Typenstr
oderunicode
, 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
vonIBaseObject<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 durchIExtendedObject<T>
markiert.Die Kennzeichnung
IEnumerable<T>
an einem TypenT
bedeutet, dass Sie jede Python-Sequenz (Generator, Listen, Tupel…), die Werte vom TypT
(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 TypenT
kennzeichnet eine typisierte Liste, die garantiert nur Elemente vom TypT
(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 TypT
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 überOnlineChangeOption.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 Namenname
und dem TypT
. Wenn dasset;
fehlt, ist die Eigenschaft nur lesbar. Das entsprechende Konstrukt in Python ist der@property
Decorator.