方法中的异常处理

2024-10-02 14:26:43 发布

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

我是个初学者,正在研究一个问题。如果一个对象用字符串参数传递,但是这个程序的输出是空白的,我必须引发一个异常。有人能帮忙吗?在

class RadiusInputError(Exception):
    pass

class Circle:
    def __init__(self,radius):
        self.radius=radius
        if type(self.radius) == "<class 'str'>":
            raise RadiusInputError

try:
    a = Circle('Hello')
except RadiusInputError:
    print("'Hello' is not a number.")

Tags: 对象字符串self程序helloinitdefexception
2条回答
class CustomError(Exception):
    pass

class Circle:
    def __init__(self,radius):
        self.radius=radius
        result = isinstance(self.radius, str)
        if result == True:
            raise CustomError

try:
    a = Circle('Hello')
except CustomError:
    print("'Hello' is not a number.")

你真的不应该用那种方式检查类型

代码不起作用的原因是:

>>> type(type(str))
<class 'type'>
>>> type(str)
<class 'type'>

如您所见,type(str)的打印表示形式看起来像一个可以与之进行比较的字符串,但是表达式type(self.radius) == "<class 'str'>":将左手边的type与右手边的str进行比较,后者永远不会求值为真。检查某个对象是否是特定类型的方法是使用isinstance,如下所示:

^{pr2}$

这正如预期的那样工作,你的代码其余部分都很好,只需更改类型检查。在

相关问题 更多 >