python中不满足条件时不创建对象?

mrC*_*ore 4 python class python-3.x

如果类的构造函数不满足某些条件,是否可以不创建对象?

例如:

class ABC:
    def __init__(self, a):
        if a > 5:
            self.a = a
        else:
            return None

a = ABC(3)
print(a)
Run Code Online (Sandbox Code Playgroud)

这应该打印None(因为它不应该创建对象但None在这种情况下返回)但当前打印对象...

sal*_*ise 5

您可以使用 aclassmethod作为备用构造函数并返回您想要的内容:

class ABC:
    def __init__(self, a):
        self.a = a

    @classmethod
    def with_validation(cls, a):
        if a > 5:
            return cls(a)
        return None


a = ABC.with_validation(10)

a
<__main__.ABC at 0x10ceec288>

a = ABC.with_validation(4)

a

type(a)
NoneType
Run Code Online (Sandbox Code Playgroud)