__init__方法中的异常处理

时间:2018-03-11 05:36:29

标签: python python-3.x class exception-handling

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

<h1>This is a simple report made with word or any editor</h1>
<p>CLIENT DATA:<php echo $myphpvariable; ?> </p>

3 个答案:

答案 0 :(得分:2)

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

您编码的原因不起作用是因为:

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

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

isinstance

这可以正常工作,其余的代码很好,只需更改类型检查。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

检查已创建对象的数据类型,并尝试以以下格式编写:

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