__index__

duncan smith buzzard at invalid.invalid
Sat Nov 1 17:56:37 CET 2014


Hello,
      I have a Bloom filter class and want to (partially) serialize
instances using hex() or oct(). Instances are mutable, so I can't
inherit from long. I thought I'd found the answer when I came across
__index__,
https://docs.python.org/2/reference/datamodel.html#object.__index__. But
it doesn't seem to work as I expected it to.


>>> class MyClass(object):
	def __init__(self):
		self.val = 7
	def __index__(self):
		return self.val

	
>>> x = MyClass()
>>> oct(x)

Traceback (most recent call last):
  File "<pyshell#76>", line 1, in <module>
    oct(x)
TypeError: oct() argument can't be converted to oct
>>> oct(x.__index__())
'07'
>>>


Can someone please explain why my thinking is wrong on this? TIA.

Duncan



More information about the Python-list mailing list