On 21/03/2020 21:55, Skip Montanaro wrote: >> import sys >> >> class C_hash(int if sys.version_info.major >= 3 else long): > ... > > There's nothing incorrect with your solution. Chris offered another. I > was going to suggest you consider running your code through 2to3 to > see what it does. I created a C_hash class similar to yours: > > class C_hash(long): > def __new__(cls, bits, m, N=1): > obj = super(C_hash, cls).__new__(cls, bits) > obj._m = m > obj._N = N > return obj > > def meth(self): > pass > > When I ran it through 2to3, it didn't make any transformations, which > I thought odd. Still, assuming I did something wrong, you might poke > around with it a bit to see if you can get it to do the work for you. > > Skip >
According to the docs (https://docs.python.org/2/library/2to3.html) it should have renamed long to int. I also tried something closer to Chris's suggestion, try: long except NameError: long = int class C_hash(long): # etc. but (tentatively) opted for something that avoided creating new names at the module level. If it doesn't look too terrible I might stick with it for now (although I am quite tempted to go back to the above). Thanks Skip and Chris. Duncan -- https://mail.python.org/mailman/listinfo/python-list