Message3320
| Author | georgyberdyshev |
|---|---|
| Recipients | georgyberdyshev |
| Date | 2008年07月09日.00:53:33 |
| SpamBayes Score | 0.03879428 |
| Marked as misclassified | No |
| Message-id | <1215564815.42.0.370033134531.issue1067@psf.upfronthosting.co.za> |
| In-reply-to |
| Content | |
|---|---|
http://www.nabble.com/class---function-call-behaviour-(Jython-vs.-CPython)-to18208441.html At the moment Jython represents several calls to classes as function calls. Here is some output of CPython 2.5 and Jython svn asm branch r4826: gebe@venus:~/work/crash$ python test.py class ******************** f_locals: {'__module__': '__main__', 'classLevelFrameInfo': ('class', <module '__main__' from 'test.py'>, {...}, {'kind': 'class', 'f_globals': {...}, 'frameInfo': <function frameInfo at 0xb7d2ad84>, '__builtins__': <module '__builtin__' (built-in)>, 'ClassType': <type 'classobj'>, '__file__': 'test.py', 'module': <module '__main__' from 'test.py'>, 'f_locals': {...}, 'sys': <module 'sys' (built-in)>, 'ClassicClass': <class __main__.ClassicClass at 0xb7d3465c>, '__name__': '__main__', '__doc__': None}), '__doc__': None} f_globals: {'kind': 'class', 'f_globals': {...}, 'frameInfo': <function frameInfo at 0xb7d2ad84>, '__builtins__': <module '__builtin__' (built-in)>, 'ClassType': <type 'classobj'>, '__file__': 'test.py', 'module': <module '__main__' from 'test.py'>, 'f_locals': {'__module__': '__main__', 'classLevelFrameInfo': ('class', <module '__main__' from 'test.py'>, {...}, {...}), '__doc__': None}, 'sys': <module 'sys' (built-in)>, 'ClassicClass': <class __main__.ClassicClass at 0xb7d3465c>, '__name__': '__main__', '__doc__': None} gebe@venus:~/work/crash$ jython25 test.py function call ******************** f_locals: {'__doc__': None, '__module__': '__main__', 'classLevelFrameInfo': ('function call', <module '__main__' from 'test.py'>, {...}, {'ClassicClass': <class __main__.ClassicClass at 1>, 'sys': sys module, '__file__': 'test.py', '__doc__': None, 'f_globals': {...}, 'frameInfo': <function frameInfo at 2>, 'kind': 'function call', '__name__': '__main__', 'f_locals': {...}, 'ClassType': <type 'class'>, 'module': <module '__main__' from 'test.py'>})} f_globals: {'ClassicClass': <class __main__.ClassicClass at 1>, 'sys': sys module, '__file__': 'test.py', '__doc__': None, 'f_globals': {...}, 'frameInfo': <function frameInfo at 2>, 'kind': 'function call', '__name__': '__main__', 'f_locals': {'__doc__': None, '__module__': '__main__', 'classLevelFrameInfo': ('function call', <module '__main__' from 'test.py'>, {...}, {...})}, 'ClassType': <type 'class'>, 'module': <module '__main__' from 'test.py'>} The code is a modified version of the parts for testing included in zope.interface: gebe@venus:~/work/crash$ cat test.py from myimport import * from types import ClassType class ClassicClass: classLevelFrameInfo = frameInfo(sys._getframe()) kind, module, f_locals, f_globals = ClassicClass.classLevelFrameInfo print kind print "*" * 20 print "f_locals: ", f_locals print print "f_globals: ", f_globals -------------------------------------------------- gebe@venus:~/work/crash$ cat myimport.py import sys def frameInfo(frame): f_locals = frame.f_locals f_globals = frame.f_globals sameNamespace = f_locals is f_globals hasModule = '__module__' in f_locals hasName = '__name__' in f_globals sameName = hasModule and hasName sameName =sameName and f_globals['__name__']==f_locals['__module__'] module = hasName and sys.modules.get(f_globals['__name__']) or None namespaceIsModule = module and module.__dict__ is f_globals if not namespaceIsModule: kind = "exec" elif sameNamespace and not hasModule: kind = "module" elif sameName and not sameNamespace: kind = "class" elif not sameNamespace: kind = "function call" else: kind = "unknown" return kind, module, f_locals, f_globals |
|
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2008年07月09日 00:53:35 | georgyberdyshev | set | spambayes_score: 0.0387943 -> 0.03879428 recipients: + georgyberdyshev |
| 2008年07月09日 00:53:35 | georgyberdyshev | set | spambayes_score: 0.0387943 -> 0.0387943 messageid: <1215564815.42.0.370033134531.issue1067@psf.upfronthosting.co.za> |
| 2008年07月09日 00:53:35 | georgyberdyshev | link | issue1067 messages |
| 2008年07月09日 00:53:34 | georgyberdyshev | create | |
Supported by Python Software Foundation,
Powered by Roundup