2007/6/20, [EMAIL PROTECTED] <[EMAIL PROTECTED]>: > In your second example y is an instance of class X...not an int. y.v > is an int. Are you hoping it will cast it to an int as needed using > your method? If so, I think you need to do so explicitly...ie "%08x" > % int(y) > > ~Sean
I confirmed that "%08x" % int(y) works. And yes, I'm hoping so. It actually works that way if the v is less than or equal to 0x7ffffffff. Please try the test script. It's essentially the same test with some more print statements. All but test d-3 appears to be ok. 2007/6/20, Gabriel Genellina <[EMAIL PROTECTED]>: > It is a bug, at least for me, and I have half of a patch addressing it. As > a workaround, convert explicitely to long before formatting. I'm interested in your patch. What's the other half still missing? Thanks, Kenji Noguchi --->8---->8--->8--- #!/usr/bin/env python class X: def __init__(self, v): self.v = v def __int__(self): print "Hey! I'm waken up!" return self.v def test(arg): print 1,type(int(arg)) print 2,"%08x" % int(arg) print 3,"%08x" % arg a = 0x7fffffff b = X(0x7fffffff) c = 0x80000000 d = X(0x80000000) print "----test a----" ; test(a) print "----test b----" ; test(b) print "----test c----" ; test(c) print "----test d----" ; test(d) --->8---->8--->8--- And here is the result ----test a---- 1 <type 'int'> 2 7fffffff 3 7fffffff ----test b---- 1 Hey! I'm waken up! <type 'int'> 2 Hey! I'm waken up! 7fffffff 3 Hey! I'm waken up! 7fffffff ----test c---- 1 <type 'long'> 2 80000000 3 80000000 ----test d---- 1 Hey! I'm waken up! <type 'long'> 2 Hey! I'm waken up! 80000000 3 Hey! I'm waken up! Traceback (most recent call last): File "<stdin>", line 23, in ? File "<stdin>", line 13, in test TypeError: int argument required -- http://mail.python.org/mailman/listinfo/python-list