In [3]:
wcs = set()
class Chroma():
def __init__(self, name):
self.name = name
wcs.add(self)
def __repr__(self):
return self.name
def __call__(self, f):
print("called")
def new_call(i):
return f(self, i)
self.__call__ = new_call
C = Chroma("C")
D = Chroma("D")
E = Chroma("E")
In [4]:
C
Out[4]:
In [6]:
class Pitch():
def __init__(self, chroma, octave):
self.chroma = chroma
self.octave = octave
def __repr__(self):
return self.chroma.__repr__() + str(self.octave)
for chroma in wcs:
chroma(Pitch)
In [8]:
C(1)