¿Cómo me aseguro de que mis ejes de matplotlib sean de una clase personalizada?

Tengo una clase de figura personalizada y me gustaría asegurarme de que todos los ejes asociados con ella, ya sean creados con twinx() o twinx() , etc. tengan comportamientos personalizados.

En este momento lo logro vinculando nuevos métodos a cada eje después de que se haya creado, por ejemplo, usando

 import types def my_ax_method(ax, test): print('{0} is doing something new as a {1}.'.format(ax, test)) class MyFigure(matplotlib.figure.Figure): def __init__(self, **kwargs): super(MyFigure, self).__init__(**kwargs) axes_a = None axes_b = None axes_c = None def setup_axes(self, ax): self.axes_a = ax self.axes_b = self.axes_a.twinx() self.axes_c = self.axes_a.twiny() self.axes_a.my_method = types.MethodType(my_ax_method, self.axes_a) self.axes_b.my_method = types.MethodType(my_ax_method, self.axes_b) self.axes_c.my_method = types.MethodType(my_ax_method, self.axes_c) 

en algo como

  fig, ax = matplotlib.pyplot.subplots(FigureClass=MyFigure) fig.setup_axes(ax) fig.axes_a.my_method("probe of A") fig.axes_b.my_method("test of B") fig.axes_c.my_method("trial of C") 

Esto parece una forma frágil de lograr lo que estoy tratando de hacer. ¿Hay una manera mejor, más pythonica de hacer esto?

En particular, ¿hay una manera de asegurar que todos los Axes de mi clase de Figure personalizada sean de una clase específica ( como se hace con las figuras mismas ): una clase de Axes personalizada que pueda tener estos métodos como parte de su definición?