gpt4 book ai didi

python - __init__ 方法中的异常处理

转载 作者:行者123 更新时间:2023-11-30 22:19:02 25 4
gpt4 key购买 nike

我是一名初学者,正在解决一个问题。如果使用字符串参数传递对象,但该程序的输出为空,我必须引发异常。有人可以帮忙吗?

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.")

最佳答案

你真的不应该以这种方式检查类型

您的代码不起作用的原因是:

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

正如您所看到的 type(str) 的打印表示看起来像一个可以比较的字符串,但表达式 type(self.radius) == "<class 'str'>":正在比较type在左侧有 str在右侧,它永远不会评估为 true。检查某物是否为特定类型的方法是使用 isinstance如下:

class RadiusInputError(Exception):
pass

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

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

这按预期工作,代码的其余部分很好,只需更改类型检查即可。

关于python - __init__ 方法中的异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49217006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com