Conseils pour les programmeurs Python sur la documentation de l'API .NET
La version préliminaire actuelle de la documentation de l'interface de script a été générée automatiquement à partir des sources .NET et C# sous-jacentes. Par conséquent, la documentation inclut certaines expressions qui ne sont pas familières aux programmeurs Python. La présentation suivante fournit quelques conseils sur la façon dont ces expressions peuvent être comprises du point de vue Python.
Une interface est le contrat qui indique à une instance d'une classe qui implémente l'interface quels membres (méthodes, propriétés) elle doit préparer. Dans IronPython, vous pouvez implémenter une ou plusieurs interfaces .NET dans une classe en héritant d'une superclasse. Si une méthode est nécessaire pour l'interface mais n'est pas disponible dans la définition de classe, une exception est levée. (La
DeviceImportFromSvn.py
exemple montre une classe qui implémente leImportReporter
interface.)Chaque paramètre et chaque méthode dans .NET est strictement typé. Le type de paramètre est séparé par un espace avant le nom du paramètre et le type de valeur de retour d'une méthode par un espace avant le nom de la méthode. Vous pouvez utiliser des instances de sous-classes lorsque vous définissez une classe (ou une interface). Une méthode sans valeur de retour est marquée
void
.Vous pouvez surcharger les méthodes. Par conséquent, plusieurs méthodes portant le même nom peuvent exister dans une même classe. Cependant, le nombre ou les types de paramètres doivent être différents. IronPython prend automatiquement en charge l'appel de la surcharge de méthode la plus appropriée.
Le type de données
int
correspond à un nombre entier de -2 147 483 648 à 2 147 483 647.Le type de données
bool
correspond au type Pythonbool
(True
etFalse
).Le type de données
string
correspond aux types Pythonstr
ouunicode
, qui sont identiques dans IronPython.La
IDictionary<object, object>
Le type de données correspond à un dictionnaire Python ordinaire. IronPython convertit automatiquement entre les types de données Python et .NET.Lorsqu'un
T
le type est hérité deIBaseObject<T>
, cela signifie que ce type peut être étendu par d'autres plug-ins pour des membres supplémentaires. L'utilisation réelle de ce type étendu en tant que paramètre ou valeur de retour est marquée parIExtendedObject<T>
.La
IEnumerable<T>
interface avec unT
type signifie que vous pouvez utiliser chaque séquence Python (générateurs, listes, tuples, etc.) qui renvoieT
valeurs de type (ou une sous-classe). Renvoie la séquence d'objets incompatibles et lève une exception lors de l'exécution.La
IList<T>
interface avec unT
type identifie une liste typée qui garantit de n'inclure que des éléments de typeT
(ou une sous-classe). Une exception est levée lors de l'exécution lors d'une tentative d'ajout d'un objet incompatible.La
params T[] name
id pour un paramètre de typeT
correspond au mécanisme Python*name
pour les listes d'arguments variables.En Python, les énumérations (
enum
) n'existent pas en tant que constructions de langage. Son but est de définir un nombre exact de valeurs constantes dans un but précis, par exemple les jours de la semaine. L'accès aux énumérations .NET depuis IronPython fonctionne en utilisant "Name.Member", par exemple viaOnlineChangeOption.Try
.Il existe également différentes approches pour émuler les énumérations en Python.
Par exemple, voir : http://pypi.python.org/pypi/enum/
La syntaxe
T name
{ get; set; }
définit une propriété avecname
comme nom etT
comme type. Siset;
est manquant, la propriété est en lecture seule. En Python, la construction respective est@property
décorateur.