How to store a function pointer in class?
Justin Sheehy
dworkin at ccs.neu.edu
Thu Jan 20 14:06:40 EST 2000
More information about the Python-list mailing list
Thu Jan 20 14:06:40 EST 2000
- Previous message (by thread): How to store a function pointer in class?
- Next message (by thread): How to store a function pointer in class?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
"Sami Hangaslammi" <shang.remove_edu at st.jyu.fi.edu> writes: > >>> class Test: > class_attribute = None > > >>> def test_func(x): > print "test_func called with",x > > >>> test_func > <function test_func at b4e620> > >>> Test.class_attribute = test_func > >>> Test.class_attribute > <unbound method Test.test_func> > >>> Test.__dict__['class_attribute'] > <function test_func at b4e620> > > Now I have a script where I need to store pointers to functions (among > other things) to class attributes and retrieve them as ordinary > functions. How do I do this Well, 'pointers to functions' are not really a very Pythonic way to think about such things. A class or instance variable may be a reference to a function object, though. Since I'm not sure what you want to _do_ with your function pointers, I'm not sure if I am answering your real question. This may be helpful: >>> class Test: ... class_attribute = None ... >>> my_test = Test() >>> def test_func(x): ... print "test_func called with",x ... >>> Test.class_attribute = test_func # or my_test.class_attribute = test_func >>> # depending on what you really want ... >>> my_test.class_attribute() test_func called with <__main__.Test instance at 80dff10> Note that Python is not designed to have class methods, but rather instance methods. All functions defined inside a class expect to receive an instance of the class as an implicit first argument. >>> Test.class_attribute() Traceback (innermost last): File "<stdin>", line 1, in ? TypeError: unbound method must be called with class instance 1st argument >>> Test.class_attribute(my_test) test_func called with <__main__.Test instance at 80dff10> >>> my_test.class_attribute() test_func called with <__main__.Test instance at 80dff10> The first call here is an error. The second and third are equivalent to each other. -Justin
- Previous message (by thread): How to store a function pointer in class?
- Next message (by thread): How to store a function pointer in class?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list