0

我将如何自定义type()针对我的班级的呼叫输出?

我正在__add__课堂上实现该方法。如果用户尝试错误地使用它,我将TypeError使用以下消息引发 a:

err_msg = "unsupported operand type(s) for -: '{}' and '{}'"
raise TypeError(err_msg.format(type(self), type(other)))

输出内容如下:

TypeError: unsupported operand type(s) for +: '<type 'instance'>' and '<type 'int'>'

我需要做什么才能让它阅读'<type 'my_class'>'

4

2 回答 2

3

您不想更改type返回的内容。你想让你的类成为一个新风格的类(除了许多其他优点)意味着这个类对象的字符串表示会提到它的名字,就像所有正确的类型(包括但不限于内置函数)一样。改变

class my_class:
    ...

class my_class(object):
    ...

如果my_class继承自另一个本身是旧样式的类,则改为将该类设为新样式。

于 2013-10-13T14:46:23.820 回答
0

简单的答案是不要使用type()my_class,而是使用字符串:

raise TypeError(err_msg.format("<type 'my_class'>", type(other)))
于 2013-10-13T14:47:35.803 回答