【发布时间】: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