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

标签 python python-3.x class

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

例如:

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

a = ABC(3)
print(a)

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

最佳答案

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

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

关于python - 在 python 中不满足条件时不创建对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47819741/

相关文章:

c# - 如何确保只创建该类对象的一个​​实例?

c++ - 尝试调用成员函数指针将不起作用

python - 如果使用 SNMPv1 找不到其中之一,Pysnmp 无法获取多个 oid

python - 将 RIJNDAEL 256 函数从 .Net 转换为 Python

python-3.x - 音乐无法从文件中播放,但在IDLE中可以正常播放

Python Selenium 选择 : "Element <option> could not be scrolled into view"

c++ - 将抽象类实现为本地类?优点和缺点

python - 如何将 numpy ndarray 导出到字符串变量?

python - 使用 scrapy 使用 Downloader Middleware 中的 XPath 或 CSS 选择器解析数据

Python3.7 ImportError : No module named 'django'