下面定义的
MyClass
接受一个参数 arg
。
class MyClass(object):
def __init__(self, arg):
super(MyClass, self).__init__()
if not isinstance(arg, int):
return None
else:
self.arg = arg
如果传入参数 arg
不是整数,我想返回 None 而不是 MyClass
的实例。
a = MyClass(arg='Text Argument')
但即使 MyClass
构造函数 __init__
在 arg
不是整数时返回 None,结果变量 a
仍然是 MyClass
的实例:
print a
<__main__.MyClass object at 0x0000000001FDEFD0>
如果给 MyClass
一个非整数参数,如何确保变量 a
保持为 None
?
最佳答案
您不应该从构造函数返回 None
,即使这是可能的。 MyClass()
的结果应该始终是 MyClass
或兼容类的实例;其他任何事情都会非常令人惊讶和错误诱导行为™。
您可以使用创建实际实例的自定义__new__
方法来执行此操作。但同样,我不会推荐它。
如果无法使用给定数据构造对象,您应该引发异常:
class MyClass(object):
def __init__(self, arg):
super(MyClass, self).__init__()
if not isinstance(arg, int):
raise TypeError('arg must be an int')
...
关于python - 如何在声明类实例时返回 None,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43476248/