我创建了一个 Python 类来进行一些数学计算。在该对象中,我试图更改类型(type)方法结果。而我的尝试失败了。
当我尝试为出现的对象使用 type() 方法时<class '__main__.MyClassName'>
我在我的方法中重写类型方法:
class MyMathOBJ():
.
.
.
def __type__(self):
return "MyMathOBJ"
但当我这样做时,一切都没有改变。结果一样。我期待的只是这个结果MyMathOBJ
.
你似乎从根本上误解了什么type
does. 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)