Download an Xcode demo project: CocoaPython.zip.
#import
#import
int main (
int argc,
const char * argv[]) {
NSAutoreleasePool * pool = [[
NSAutoreleasePool alloc]
init];
/* initialization */
Py_Initialize();
PyObject *sysModule =
PyImport_ImportModule(
"sys");
PyObject *sysModuleDict =
PyModule_GetDict(sysModule);
PyObject *pathObject =
PyDict_GetItemString(sysModuleDict,
"path");
PyObject_CallMethod(pathObject,
"insert",
"(is)",
0,
"../../");
Py_DECREF(sysModule);
// borrowed reference
/* import and instantiate Cat */
// from Cat import *
PyObject *CatModule =
PyImport_ImportModule(
"Cat");
// c = Cat()
PyObject *Cat =
PyDict_GetItemString(
PyModule_GetDict(CatModule),
"Cat");
PyObject *cat =
PyObject_CallObject(Cat,
NULL);
Py_DECREF(CatModule);
Py_DECREF(Cat);
/* use Cat instance methods */
// c.scream()
// c.set_name("charly")
// c.print_family("jack", "cathy", 4)
PyObject_CallMethod(cat,
"scream",
NULL);
PyObject_CallMethod(cat,
"set_name",
"(s)",
"charly");
PyObject_CallMethod(cat,
"print_family",
"(ssi)",
"jack",
"cathy",
4);
// c.is_asleep()
PyObject *is_asleep =
PyObject_CallMethod(cat,
"is_asleep",
NULL);
BOOL isAsleep = (Py_True == is_asleep);
Py_DECREF(is_asleep);
NSLog(
@"%d", isAsleep);
// c.name()
PyObject *name =
PyObject_CallMethod(cat,
"name",
NULL);
NSString *catName = [
NSString stringWithCString: PyString_AsString(name)];
Py_DECREF(name);
NSLog(
@"%@", catName);
/* termination */
Py_DECREF(cat);
Py_Finalize();
[pool
release];
return 0;
}