Sugerencias para programadores de Python sobre la documentación de la API de .NET
La versión preliminar actual de la documentación de la interfaz del script se ha generado automáticamente a partir de las fuentes subyacentes de .NET y C#. Por lo tanto, la documentación incluye algunas expresiones que no son familiares para los programadores de Python. La siguiente descripción general proporciona algunos consejos sobre cómo se pueden entender estas expresiones desde la perspectiva de Python.
Una interfaz es el contrato que le dice a una instancia de una clase que implementa la interfaz qué miembros (métodos, propiedades) tiene que preparar. En IronPython, puede implementar una o más interfaces .NET en una clase al heredar de una superclase. Si se necesita un método para la interfaz pero no está disponible en la definición de clase, se lanza una excepción. (El
DeviceImportFromSvn.py
El ejemplo muestra una clase que implementa elImportReporter
interfaz.)Cada parámetro y cada método en .NET está estrictamente tipificado. El tipo de parámetro está separado por un carácter de espacio antes del nombre del parámetro y el tipo de valor de retorno de un método por un carácter de espacio antes del nombre del método. Puede usar instancias de subclases cuando define una clase (o interfaz). Se marca un método sin valor de retorno
void
.Puede sobrecargar los métodos. Como resultado, pueden existir múltiples métodos con el mismo nombre en una clase. Sin embargo, el número o los tipos de parámetros tienen que ser diferentes. IronPython automáticamente se encarga de llamar a la sobrecarga del método más apropiado.
el tipo de datos
int
corresponde a un número entero de -2.147.483.648 a 2.147.483.647.el tipo de datos
bool
corresponde al tipo Pythonbool
(True
yFalse
).el tipo de datos
string
corresponde a los tipos de Pythonstr
ounicode
, que son idénticos en IronPython.El
IDictionary<object, object>
el tipo de datos corresponde a un diccionario Python ordinario. IronPython convierte automáticamente entre tipos de datos Python y .NET.Cuando un
T
el tipo se hereda deIBaseObject<T>
, significa que este tipo se puede ampliar con otros complementos para miembros adicionales. El uso real de este tipo extendido como parámetro o valor de retorno está marcado porIExtendedObject<T>
.El
IEnumerable<T>
interfaz a unT
tipo significa que puede usar cada secuencia de Python (generadores, listas, tuplas, etc.) que devuelveT
valores de tipo (o una subclase). Devuelve la secuencia de objetos incompatibles y lanza una excepción en tiempo de ejecución.El
IList<T>
interfaz a unT
tipo identifica una lista tipificada que garantiza incluir solo elementos de tipoT
(o una subclase). Se lanza una excepción en tiempo de ejecución cuando se intenta agregar un objeto incompatible.El
params T[] name
id para un parámetro de tipoT
corresponde al mecanismo de Python*name
para listas de argumentos variables.En Python, las enumeraciones (
enum
) no existen como construcciones del lenguaje. Su propósito es definir un número exacto de valores constantes para un propósito específico, por ejemplo, los días de la semana. El acceso a las enumeraciones .NET desde IronPython funciona usando "Name.Member", por ejemplo a través deOnlineChangeOption.Try
.También hay diferentes enfoques para emular enumeraciones en Python.
Por ejemplo, vea: http://pypi.python.org/pypi/enum/
la sintaxis
T name
{ get; set; }
define una propiedad conname
como el nombre yT
como el tipo. Siset;
falta, entonces la propiedad es de solo lectura. En Python, la construcción respectiva es@property
decorador.