PyObjC es un puente bidireccional entre el pitón y Objective-C lenguajes de programación, lo que permite a los programadores utilizar y se extienden de Objective-C existentes bibliotecas , como la de Apple 's Cacao marco , utilizando Python.
Autor (es) original (es) | Lele Gaifax |
---|---|
Desarrollador (es) | Ronald Oussoren, Bill Bumgarner, Steve Majewski, et al. |
Versión inicial | Septiembre de 1996 |
Lanzamiento estable | 5.2 / 3 de abril de 2019 [1] |
Repositorio | |
Escrito en | Pitón |
Sistema operativo | Multiplataforma |
Licencia | Licencia MIT |
Sitio web | pyobjc |
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] Por otra parte, como un efecto de la estrecha relación de Objective-C con el C lenguaje de programación (que es un superconjunto puro), los desarrolladores también son capaces de incorporar cualquier basado en C API por envolviéndolo con una envoltura Objective-C y luego usando el código envuelto sobre el puente PyObjC. Con 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 toman menos líneas que el equivalente de Objective-C. Esto se puede utilizar en su beneficio, ya que permite una creación de prototipos más rápida.
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 colaboradores acreditados se encontraba Guido van Rossum, creador del lenguaje de programación Python.
PyObjC fue reescrito en 2002. Las adiciones notables incluyen la capacidad de subclasificar directamente las clases Objective-C de Python y soporte casi completo para los marcos Foundation, App Kit y Address Book.
Más tarde ese mismo año, se añadió soporte para Python marco no se acumula, así como la posterior apoyo a la distribución de Python incluido con Mac OS X . Junto con estos cambios llegaron plantillas de proyecto para aplicaciones independientes de Cocoa para su uso con Project Builder , el predecesor del actual IDE de la plataforma de Apple , Xcode .
Apple incorporó PyObjC en 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 empareja con un método designado con el mismo selector, que luego invoca.
La sintaxis de estas expresiones de mensaje se hereda de Smalltalk y aparece como un objeto, llamado receptor, colocado a la izquierda del nombre del mensaje, o selector, y ambos están encerrados dentro de 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 la intención de mejorar la legibilidad del código, los dos puntos se colocan dentro del selector de modo que cuando los argumentos requeridos están en su lugar, la intención de la expresión es 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 se leería:
myLittleDuck . makeSomeNoise_eyesClosed_onOneFoot_ ( quack , True , True )
La traducción de los selectores de Objective-C a los nombres de los métodos de Python se logra reemplazando cada dos puntos con un guión bajo y enumerando los argumentos dentro de un par de paréntesis al final, como se demostró anteriormente.
Clases
Las clases Objective-C se subclasifican de la misma manera que una clase Python normal:
class 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 subclase, self, se instancia # enviando a la superclase su # inicializador designado. retorno automyLittleDuckOne = MyDuck . alloc () . init ()
Ver también
Referencias
- ^ "pyobjc" . Índice de paquetes de Python . Consultado el 21 de abril de 2019 .
- ^ "Introducción a PyObjC" . Consultado el 5 de agosto de 2018 .
- ^ "PyObjC HISTORIC.txt" . 2002-10-12 . Consultado el 29 de septiembre de 2017 .
- ^ "PyObjC downloads.rst" . Consultado el 29 de septiembre de 2017 .