I would like to define a class so that its instances can be casted to both tuple
and dict
. An example:
class Point3:
...
p = Point(12, 34, 56)
tuple(p) # gives (12, 34, 56)
dict(p) # gives { 'x': 12, 'y': 34, 'z': 56 }
I have found that if I define __iter__
as an iterator that yields single values then the instance can be casted to tuple
and if it instead yields double values then it can be casted to dict
:
class Point3:
def __init__(self, x, y, z):
self.x = x
self.y = y
self.z = z
# This way makes instance castable to tuple
def __iter__(self):
yield self.x
yield self.y
yield self.z
# This way makes instance castable to dict
def __iter__(self):
yield 'x', self.x
yield 'y', self.y
yield 'z', self.z
Is there any way to make instances castable to both tuple
and dict
in Python 2.7?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With