我为一些数学计算创建了一个Python类。在该对象中,我试图更改type(type)方法的结果。我的尝试失败了。
当我尝试为出现的对象使用type()方法时,我
<class '__main__.MyClassName'>
在方法中覆盖了type方法:
class MyMathOBJ():
.
.
.
def __type__(self):
return "MyMathOBJ"
Run Code Online (Sandbox Code Playgroud)
但是当我这样做时,什么都没有改变。相同的结果。我只是期待那个结果MyMathOBJ。
您似乎从根本上误解了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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
91 次 |
| 最近记录: |