https://blog.csdn.net/wwx890208/article/details/80644400 https://blog.ionelmc.ro/2015/02/09/understanding-python-metaclasses/