Вы, похоже, в корне не понимаете, что делает type
.type
сам по себе является просто классом, метаклассом .Когда вы вызываете type
для экземпляра, он возвращает объект класса, соответствующий этому экземпляру, в значительной степени эквивалентный instance.__class__
.Однако вы просто хотите изменить способ представления объекта класса при его печати , поэтому вам потребуется реализовать метакласс для MyMathOBJ
, который переопределяет __repr__
в метаклассе для достижения этой цели.
Вот как вы делаете то, что вы на самом деле пытаетесь сделать:
In [12]: class PrettyType(type):
...: def __repr__(self):
...: return self.__name__
...:
In [13]: class MyMathOBJ(metaclass=PrettyType):
...: pass
...:
In [14]: obj = MyMathOBJ()
In [15]: obj
Out[15]: <MyMathOBJ at 0x1060cbcc0>
In [16]: type(obj)
Out[16]: MyMathOBJ