【问题标题】:How to not create an object when there is an exception (python)?发生异常时如何不创建对象(python)?
【发布时间】:2019-12-13 15:40:48
【问题描述】:

我创建了一个类,它接受一个参数,当这个参数的类型不是字符串时,它会引发一个异常。好吧,当我想创建此类的对象并且参数不是字符串时,它会引发异常,但无论如何它都会创建对象。有什么办法可以阻止对象的创建?

class Movie():
    def __init__(self, name):
        if type(name) != str:
            raise Exception("name should be string")
        else:
            self.name = name

movie = Movie(1)

在这里我得到了异常,但是如果我print(movie),我会得到对象在内存中的位置。我想得到一个错误,这个名字没有定义。提前致谢。

【问题讨论】:

  • 您可能想要覆盖 new 方法,因为它控制对象的创建 - 请参阅 this post
  • 可能在加注前加上“del self”
  • 如果我运行你的代码,那么“电影”就没有定义
  • 另外最好使用isinstance(foo, str) 而不是type(foo) == str

标签: python class exception


【解决方案1】:

解决方法,在raise之前删除self对象

class Movie():
    def __init__(self, name):
        if type(name) != str:
            del self
            raise Exception("name should be string")
        else:
            self.name = name

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-01
    • 2010-12-08
    • 2015-03-20
    • 2011-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多