Lesen von .NET-API-Dokumentationen

Lesen von .NET-API-Dokumentationen für Python-Programmierer

Die aktuelle vorläufige Version der Skriptschnittstellen-Dokumentation wird automatisch aus den zugrundeliegenden .NET / C#-Quellen erstellt. Dadurch enthält sie einige Idiome, die Python-Programmierern nicht unbedingt bekannt sind.

Die Liste enthält einige Hinweise darauf, wie diese in eine Python-Entsprechung umgewandelt werden können:

oSchnittstellen in .NET sind Vorgaben, welche Elemente (Methoden, Eigenschaften) von den Klassen bereitgestellt werden müssen, die diese Schnittstelle implementieren. In IronPython können eine oder mehrere .NET-Schnittstellen implementiert werden, indem diese wie Basisklassen abgeleitet werden. Wenn ein Element, das von der Schnittstelle deklariert wurde, in der Deklaration fehlt, wird während der Laufzeit eine Ausnahme ausgegeben. (Das Beispiel DeviceImportFromSvn.py zeigt, wie eine Klasse die ImportReporter-Schnittstelle implementiert.)

oIn .NET sind alle Parameter, Eigenschaften und Funktionsrückgabewerte statisch typisiert. Der erlaubte Typ wird vor dem Parameternamen vermerkt. Bei Funktionen wird der Typ des Rückgabewerts vor dem Funktionsnamen vermerkt. Instanzen von Subklassen sind erlaubt, wenn eine übergeordnete Klasse (oder Schnittstelle) erwähnt wird. void bezeichnet eine Funktion ohne Rückgabewert.

oMethoden können überladen sein. Eine Klasse kann mehrere Methoden mit dem gleichen Namen haben, die sich jedoch in Anzahl und/oder Typen der Parameter unterscheiden. IronPython ruft die passende Variante automatisch auf.

oDer Typ INT kann ganze Zahlen zwischen -2.147.483.648 ... 2.147.483.647 enthalten, BOOL entspricht dem Python Typ BOOL (WAHR und FALSCH), der Typ STRING entspricht dem Python Typ str und Unicode (welche in IronPython gleich sind). IDictionary<Objekt, Objekt> bezeichnet ein normales Python-Verzeichnis. IronPython konvertiert automatisch zwischen Python- und .NET-Typen.

oWenn ein Typ T aus IBaseObject<T> abgeleitet wird, kann dieser Typ um zusätzliche Elemente anderer Plugins erweitert werden. Die tatsächliche Verwendung des Typs T in Parametern oder Rückgabewerten wird mit IExtendedObject<T> gekennzeichnet.

oDie Schnittstelle IEnumerable<T>  beschreibt jede Sequenz (Listen, Arrays, Generatoren), die ausschließlich Objekte des Typs T (oder unterklassen) erzeugt. Wenn die Sequenz ein nicht kompatibles Objekt erzeugt, dann wird während der Laufzeit eine Ausnahme ausgegeben.

oDie Schnittstelle IList<T> beschreibt eine Liste, die ausschließlich Objekte des Typs T (oder Unterklassen) enthält. Wenn versucht wird, ein nicht kompatibles Objekt hinzuzufügen, wird eine Ausnahme geworfen.

oDie Syntax params T [] name entspricht der Python-Syntax *name für variable Argumentenlisten, beschränkt den Parameter jedoch auf den Typ T (oder Unterklassen).

oEnumerationswerte (ENUM) existieren in Python nicht als Sprachkonstrukt. Sie werden zur Definition einer festen Anzahl an konstanten Werten benutzt, zum Beispiel für die Tage einer Woche. Man kann auf Enumerationswerte, die in .NET efiniert sind, über die Syntax Name.Member (ähnlich den statischen Klassenelementen) in IronPython zugreifen, beispielsweise OnlineChangeOption.Try. Es gibt verschiedene Muster zur Emulation von Enumerationswerten in Python, beispielsweise http://pypi.python.org/pypi/enum/ oder http://www.ironpython.info/index.php/Enumerations.

oEigenschaften, die mit { get; set; }  gekennzeichnet sind, können gelesen und geschrieben werden, Eigenschaften, die nur mit { get; }  gekennzeichnet sind, sind schreibgeschützt. Sie sind mit dem @property-Dekorierer in Python vergleichbar.

Die folgenden Eingangspunkte sind für Skripts verfügbar:

osystem: Grundfunktionalität für die Integration in das EcoStruxure Machine Expert-System. Dieses Objekt stellt alle Funktionen bereit, die in ISystem Interface beschrieben werden, so wie der Ausgang von EcoStruxure Machine Expert, der Zugriff auf das Meldungsfenster oder die Abfrage, ob der --noUI-Modus läuft, durch Verwendung des Befehls ui_present.

oprojects: Grundfunktionalität für das Projektmanagement. Dieses Objekt stellt alle Funktionen bereit, die in IScriptProjects Interface beschrieben werden, so wie das Laden von Projekten und Projektarchiven. Außerdem ist es der Eingangspunkt für individuelle Projekte.

oonline: Grundfunktionalität für die Online-Verbindung des Geräts. Durch die Verwendung der create_online_application -Methode kann das Online-Objekt eines Anwendungs­objekts erzeugt werden. Dieses Online-Objekt ermöglicht die Anmeldung bei Steuerungen, den Start von Anwendungen und das Abrufen von Variablenwerten.