PyObjC es un puente bidireccional entre los lenguajes de programación Python y Objective-C , que permite a los programadores usar y extender las bibliotecas Objective-C existentes , como el framework Cocoa de Apple , utilizando Python.
PyObjC se utiliza para desarrollar aplicaciones de macOS en Python puro.
También existe un soporte limitado para GNUstep , una implementación de Cocoa de código abierto y multiplataforma .
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 resultado 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 envoltorio de Objective-C y luego utilizando el código envuelto a través del puente PyObjC. Usando Objective-C++ , se puede hacer lo mismo con las bibliotecas de C++ .
Para programadores de Objective-C
Los desarrolladores de Cocoa también pueden beneficiarse, ya que las tareas escritas en Python generalmente requieren menos líneas de código que sus equivalentes en Objective-C. Esto les permite crear prototipos con mayor rapidez.
Historia
Los orígenes de PyObjC se remontan a 1996, cuando Lele Gaifax creó el módulo original en septiembre de ese año. [ 3 ] Entre los colaboradores acreditados se encontraba Guido van Rossum, creador del lenguaje de programación Python.
PyObjC fue reescrito en 2002. Entre las adiciones más destacadas se incluyen la capacidad de crear subclases directamente de clases de Objective-C desde Python y una compatibilidad casi completa con los frameworks Foundation, App Kit y Address Book.
Más adelante ese mismo año, se añadió compatibilidad con compilaciones de Python sin framework, así como compatibilidad posterior con la distribución de Python incluida en Mac OS X. Junto con estos cambios, llegaron plantillas de proyecto para aplicaciones Cocoa independientes para usar con Project Builder , el predecesor del actual IDE de la plataforma Apple , 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 cual 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 asocia con un método designado con el mismo selector, el cual luego invoca.
La sintaxis de estas expresiones de mensaje se hereda de Smalltalk y aparece como un objeto, llamado receptor, situado a la izquierda del nombre del mensaje o selector, y ambos se encierran entre 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 fin de mejorar la legibilidad del código, los dos puntos se colocan dentro del selector de manera que, cuando se incluyen los argumentos necesarios, la intención de la expresión sea inequívoca.
[ myLittleDuck makeSomeNoise : quack eyesClosed : @YES onOneFoot : @YES ];Esto es distinto de la sintaxis utilizada en Python y en muchos otros lenguajes, donde una expresión equivalente sería:
miPatito.hacerAlgoDeRuido_ojosCerrados_enUnPato_ ( cuac , Verdadero , Verdadero )La traducción de selectores de Objective-C a nombres de métodos de Python se logra reemplazando cada dos puntos con un guion bajo y enumerando los argumentos entre paréntesis al final, como se muestra arriba.
Clases
Las clases de Objective-C se subclasifican de la misma manera que una clase normal de Python:
clase MyDuck ( NSObject ): # NSObject es una clase base de Objective-C. def init ( self ): self = super ( MyDuck , self ) . init () # Un modismo de Objective-C, en el que la # instancia de la subclase, self, se instancia # enviando a la superclase su # inicializador designado. return selfmyLittleDuckOne = MyDuck.alloc ( ) . init ( )Véase también
Referencias
- ↑ "pyobjc" . Índice de paquetes de Python . Consultado el 27 de marzo de 2025 .
- ↑ "Introducción a PyObjC" . Consultado el 5 de agosto de 2018 .
- ↑ "PyObjC HISTORIC.txt" . 12 de octubre de 2002. Consultado el 29 de septiembre de 2017 .
- ↑ "PyObjC downloads.rst" . Consultado el 29 de septiembre de 2017 .
Enlaces externos
- Bibliotecas de Python (lenguaje de programación)
- Herramientas de programación de macOS