From: Darek S. <ds...@us...> - 2005-05-26 07:13:51
|
Hello, I've just uploaded a patch to make enumerate a new-style type http://sf.net/tracker/index.php?func=detail&aid=1094757&group_id=12867&atid=312867. However, it fails on one test currently (not to mention those requiring sets module) and on closer inspection it seems that enumerate is not the only new-style type that is not behaving well wrt subclassing. Consider this: dsuch@rampart ~ $ cat test_newstyle_subclass.py class myenum(enumerate):pass class myfloat(float): pass class myint(int): pass class mylong(long): pass class mycomplex(complex): pass class mylist(list): pass class mytuple(tuple): pass class mydict(dict): pass print type(myenum([1])), myenum print type(myfloat(1)), myfloat print type(myint(1)), myint print type(mycomplex(1)), mycomplex print type(mylist([1])), mylist print type(mytuple([1])), mytuple print type(mydict({1:1})), mydict dsuch@rampart ~ $ python -V; python test_newstyle_subclass.py Python 2.3.5 <class '__main__.myenum'> <class '__main__.myenum'> <class '__main__.myfloat'> <class '__main__.myfloat'> <class '__main__.myint'> <class '__main__.myint'> <class '__main__.mycomplex'> <class '__main__.mycomplex'> <class '__main__.mylist'> <class '__main__.mylist'> <class '__main__.mytuple'> <class '__main__.mytuple'> <class '__main__.mydict'> <class '__main__.mydict'> dsuch@rampart ~ $ jython.bat --version; jython.bat test_newstyle_subclass.py Jython 2.2a1 on java (JIT: null) <type 'enumerate'> <class '__main__.myenum'> <type 'float'> <class '__main__.myfloat'> <type 'int'> <class '__main__.myint'> <type 'complex'> <class '__main__.mycomplex'> <class '__main__.mylist'> <class '__main__.mylist'> <type 'tuple'> <class '__main__.mytuple'> <class '__main__.mydict'> <class '__main__.mydict'> dsuch@rampart ~ $ I understand this is related to sandbox/jt/gderived.py, but I'm not sure how to use this tool, and how to allow for proper subclassing of enumerate (and other types). Can someone please shed some light on this? thanks, darek |