Python中类型()的自定义输出

2024-04-19 05:55:10 发布

您现在位置:Python中文网/ 问答频道 /正文

如何针对我的类定制type()调用的输出?你知道吗

我正在类中实现__add__方法。如果用户试图不正确地使用它,我将用以下消息引发TypeError

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'>'?你知道吗


Tags: and方法用户selfaddformat消息for
2条回答

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

class my_class:
    ...

class my_class(object):
    ...

如果my_class继承自另一个本身是旧样式的类,则将改为类new stlye。你知道吗

简单的答案是不要对我的类使用type(),而是使用一个字符串:

raise TypeError(err_msg.format("<type 'my_class'>", type(other)))

相关问题 更多 >