PyObjC

PyObjC
Autor(es) original(es)Lele Gaifax
Desarrollador(es)Ronald Oussoren, Bill Bumgarner, Steve Majewski y otros.
Lanzamiento inicialSeptiembre de 1996 ; hace 28 años ( 1996-09 )
Versión estable
5.2 / 3 de abril de 2019 ; hace 5 años [1] ( 03-04-2019 )
Repositorio
  • github.com/ronaldoussoren/pyobjc
Escrito enPitón
Sistema operativoMultiplataforma
LicenciaLicencia MIT
Sitio webpyobjc.readthedocs.io/en/latest/

PyObjC es un puente bidireccional entre los lenguajes de programación Python y Objective-C , que permite a los programadores utilizar y ampliar las bibliotecas Objective-C existentes , como el marco Cocoa de Apple , utilizando Python.

PyObjC se utiliza para desarrollar aplicaciones macOS en Python puro.

También hay soporte limitado para GNUstep , una implementación multiplataforma de código abierto de Cocoa.

Para programadores de Python

El uso más importante de PyObjC es permitir a los programadores crear aplicaciones GUI utilizando bibliotecas Cocoa en Python puro. [2] Además, como efecto de la estrecha relación de Objective-C con el lenguaje de programación C (es un superconjunto puro), los desarrolladores también pueden incorporar cualquier API basada en C envolviéndola con un contenedor Objective-C y luego usando el código envuelto sobre el puente PyObjC. Usando Objective-C++ , se puede hacer lo mismo con las bibliotecas C++ .

Para programadores Objective-C

Los desarrolladores de Cocoa también pueden beneficiarse, ya que las tareas escritas en Python generalmente ocupan menos líneas que su equivalente en Objective-C. Esto puede ser una ventaja para ellos, ya que permite crear prototipos más rápido.

Historia

Los orígenes de PyObjC se remontan a 1996, cuando Lele Gaifax construyó el módulo original en septiembre de ese año. [3] Entre los contribuyentes acreditados se encontraba Guido van Rossum, creador del lenguaje de programación Python.

PyObjC fue reescrito en 2002. Entre las incorporaciones notables se incluyen la capacidad de subclasificar directamente clases Objective-C desde Python y un soporte casi completo para los marcos Foundation, App Kit y Address Book.

Más tarde, ese mismo año, se agregó soporte para compilaciones de Python que no fueran de framework, así como soporte posterior para la distribución de Python incluida con Mac OS X. Junto con estos cambios, llegaron plantillas de proyecto para aplicaciones Cocoa independientes para usar con Project Builder , el predecesor del IDE de la plataforma Apple actual , Xcode .

Apple incorporó PyObjC a Mac OS X en 2007, con el lanzamiento de Mac OS X 10.5 Leopard . [4]

Mensajes y métodos

En Objective-C, los objetos se comunican entre sí mediante el envío de mensajes, lo que es análogo a las llamadas a métodos en otros lenguajes orientados a objetos. Cuando un objeto recibe un mensaje, busca el nombre del mensaje, o selector, y lo compara con un método designado con el mismo selector, que luego invoca.

La sintaxis de estas expresiones de mensajes se hereda de Smalltalk y aparece como un objeto, llamado receptor, ubicado a la izquierda del nombre del mensaje o selector, y ambos están encerrados entre un par de corchetes (la sintaxis de corchetes no se hereda de Smalltalk). Los dos puntos dentro de un selector indican que acepta uno o más argumentos, uno por cada dos puntos. Con el objetivo de mejorar la legibilidad del código, los dos puntos se colocan dentro del selector de tal manera que cuando los argumentos requeridos están en su lugar, la intención de la expresión es inequívoca:

 [ myLittleDuck makeSomeNoise : graznido ojosCerrados : @YES onOneFoot : @YES ];   

Esto es distinto de la sintaxis utilizada en Python y en muchos otros lenguajes, donde una expresión equivalente sería:

 myLittleDuck . makeSomeNoise_eyesClosed_onOneFoot_ ( quack ,  Verdadero ,  Verdadero )

La traducción de los selectores de Objective-C a nombres de métodos de Python se logra reemplazando cada dos puntos con un solo guión bajo y enumerando los argumentos dentro de un par de paréntesis al final, como se demuestra arriba.

Clases

Las clases Objective-C se subclasifican de la misma manera que una clase Python normal:

clase  MyDuck ( NSObject ):  # NSObject es una clase base Objective-C.  def  init ( self ):  self  =  super ( MyDuck ,  self ) . init ()  # Un modismo Objective-C, en el que la  # instancia de la subclase, self, se instancia  # enviando a la superclase su  # inicializador designado.  return  selfmiPequeñoPatoUno  =  MiPato . alloc () . init ()

Véase también

Referencias

  1. ^ "pyobjc". Índice de paquetes de Python . Consultado el 21 de abril de 2019 .
  2. ^ "Introducción a PyObjC" . Consultado el 5 de agosto de 2018 .
  3. ^ "PyObjC HISTORIC.txt". 12 de octubre de 2002. Consultado el 29 de septiembre de 2017 .
  4. ^ "Descargas de PyObjC.rst" . Consultado el 29 de septiembre de 2017 .
  • Sitio web oficial
  • Advertencia de Ronald Oussoren sobre Xcode 4.0
Obtenido de "https://es.wikipedia.org/w/index.php?title=PyObjC&oldid=1057065869"