Python __init__方法中的异常处理
我是一个初学者,正在解决一个问题。如果用字符串参数传递对象,但该程序的输出为空,则必须引发异常。有人能帮忙吗Python __init__方法中的异常处理,python,python-3.x,class,exception-handling,Python,Python 3.x,Class,Exception Handling,我是一个初学者,正在解决一个问题。如果用字符串参数传递对象,但该程序的输出为空,则必须引发异常。有人能帮忙吗 class RadiusInputError(Exception): pass class Circle: def __init__(self,radius): self.radius=radius if type(self.radius) == "<class 'str'>": raise Radiu
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.")
class RadiusInputError(例外):
通过
班级圈子:
定义初始(自身,半径):
自半径=半径
如果类型(自身半径)=“”:
提高放射度
尝试:
a=圆圈(“你好”)
除Radiusinputeror外:
打印(“'Hello'不是数字。”)
您真的不应该以这种方式检查类型
您编写的代码不起作用的原因是:
>>> type(type(str))
<class 'type'>
>>> type(str)
<class 'type'>
这正如预期的那样工作,其余的代码都很好,只需更改类型检查。检查已创建对象的数据类型,并尝试使用以下格式编写:
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.")
class RadiusInputError(Exception):
pass
class Circle:
def __init__(self,radius):
self.radius=radius
try:
if not isinstance(self.radius, int):
raise RadiusInputError
except RadiusInputError:
print("'hello' is not a number.")
a = Circle('hello')
class RadiusInputError(Exception):
pass
class Circle:
def __init__(self,radius):
self.radius=radius
try:
if not isinstance(self.radius, int):
raise RadiusInputError
except RadiusInputError:
print("'hello' is not a number.")
a = Circle('hello')