function pointers

W Isaac Carroll icarroll at pobox.com
Mon Jun 2 18:27:50 CEST 2003


Jimmy verma wrote:
> Hello !

Hello!

> I have a few statements in C for which i want to write the equivalent 
> code in python:
> 
> typedef int (*AB)(int a, int b);          #a function pointer type used 
> to describe signature of some function.

Because Python is dynamically typed, you don't declare types or 
signatures. Once a function is defined, just use its name like you would 
a pointer. You can assign it to another variable or pass it to another 
function.

     def func(arg1, arg2):
         # function body

     othervar = func
     otherfunc(func)

> Then a structure of the form
> 
> typedef struct abc
> {
>       AB make;
>       int a;
> }ABC;

This is usually written:

     class ABC:
         pass

     cba = ABC()
     cba.make = func
     cba.a = 42

If you really want to enforce which fields are allowed, you can use 
"slots", but don't do that until you know the Pythonic reasons for it.

> Now this structure is getting passed to some function
> 
> xyz(const ABC* inter)
> {
>         #some code here
>          e = inter->Make(a, b);
> }

Functions are treated just like other data types in Python.

     def xyz(inter):
         # some code here
         e = inter.make(a, b)   # case is significant just like in C

> How can i handle it with python.

I hope this has helped your exploration of Python.

TTFN






More information about the Python-list mailing list