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')