Ask Your Question

What file does the "in" operator reside in?

asked 2011-11-17 01:27:19 +0200

process91 gravatar image

When I run something like

sage: 32 in ZZ

Where is this "in" operator defined? In general, is there a nice way to trace something like this to find the file(s) being accessed?

edit retag flag offensive close merge delete

2 Answers

Sort by ยป oldest newest most voted

answered 2011-11-17 06:17:24 +0200

Mike Hansen gravatar image

The in operator uses the Python special method __contains__. The Python documentation about this is here. You can get the source code for this by doing ZZ.__contains__??.

There is the trace function, but it isn't very useful for code in (compiled) Cython files unless you turn on profiling for Cython.

edit flag offensive delete link more


Thanks, is there any way to tell from the ?? output what file it is being defined in (as most other commands show)? As is, I grepped the files in the sage devel directory and came up with structure/parent.pyx and structure/parent.c files. Incidentally, should I be modifying pyx files or only their c counterparts?

process91 gravatar imageprocess91 ( 2011-11-17 12:21:17 +0200 )edit

answered 2011-11-17 14:25:21 +0200

parzan gravatar image

updated 2011-11-17 14:29:58 +0200

You can find the function source like this:

sage: ZZ.__contains__.__doc__
'File: sage/structure/parent.pyx (starting at line 950)...

and what object it belongs to with ZZ.__contains__.__objclass__ (and then you can do ZZ.__contains__.__objclass__??). I don't know if this will work generally.

Also, here are listed many operators with their corresponding names.

edit flag offensive delete link more


Thanks very much, that's very useful.

process91 gravatar imageprocess91 ( 2011-11-17 15:21:02 +0200 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools


Asked: 2011-11-17 01:27:19 +0200

Seen: 301 times

Last updated: Nov 17 '11