PyObjC
Developer(s) | Ronald Oussoren, Bill Bumgarner, Steve Majewski, Lele Gaifax, et al. |
---|---|
Stable release | 2.3.2a (as part of OS X 10.8)
/ July 25, 2012 |
Repository | |
Written in | Python |
Operating system | Cross-platform |
License | MIT License |
Website | http://pyobjc.sourceforge.net/ |
PyObjC is a bidirectional bridge between the Python and Objective-C programming languages, allowing programmers to use and extend existing Objective-C libraries, such as Apple's Cocoa framework, using Python.
PyObjC is used to develop OS X applications in pure Python.
There is also limited support for GNUstep, an open source, cross-platform implementation of Cocoa.
For Python Programmers
The most important usage of PyObjC is enabling programmers to create GUI applications using Cocoa libraries in pure Python. Moreover, as an effect of Objective-C's close relationship with the C programming language (it is a pure superset), developers are also able incorporate any C-based API by wrapping it with an Objective-C wrapper and then using the wrapped code over the PyObjC bridge. Using Objective-C++, the same can be done with C++ libraries.
For Objective-C Programmers
Cocoa developers may also benefit, as tasks written in Python generally take fewer lines than the Objective-C equivalent. This can be used to their advantage as it enables faster prototyping.
History
PyObjC's origins date back to 1996, when Lele Gaifax built the original module in September of that year. Among the credited contributors were Guido van Rossum, creator of the Python programming language.
PyObjC was rewritten in 2002. Notable additions include the ability to directly subclass Objective-C classes from Python and nearly complete support for the Foundation, App Kit and Address Book frameworks.
Later the same year, support was added for non-framework Python builds, as well as subsequent support for the Python distribution included with OS X. Along with these changes came project templates for standalone Cocoa applications for use with Project Builder, the predecessor to the current Apple platform IDE, Xcode.
Apple incorporated PyObjC into OS X in 2007, with the release of Mac OS X 10.5 Leopard.
Principle Behind Bridge
The implementation of bridging between Python and Objective-C is by BridgeSupport and libffi. The core concept of connection is based on that Objective-C uses messages for communication between its objects. And PyObjC provides translation from these messages to Python methods by replacing the colons with underscores. Following is the sample for translation.
Messages and Methods
For the syntax conversion, simply change the colons from original Objective-C code to underscores. Such like following examples:
[myLittleDuck makeSomeNoise:quack]
the above code should be changed like following
myLittleDuck.makeSomeNoise_(quack)
And for more than one parameter messages, one can follow the same principle:
[myLittleDuck flyToward:east flyWithSpeed:10]
should be converted as:
myLittleDuck.flyToward_flyWithSpeed_(east,10)
Classes
The classes of Objective-C could be simply subclassed like normal Python classes. following can be referenced as example of class initiation:
class MyDuck(NSObject):
def init(self):
self = super(MyDuck, self).init()
#ALWAYS call initializer from super class
return self
#Unlike Python, one can even return any other object in initializer.
MyLittleDuckOne = MyDuck.alloc().init()
External links