https://medium.com/@oz3dprinter/demystifying-metaclasses-and-attributes-in-python-power-tools-you-didnt-know-you-needed-3f2401e4d190