如何在不终止程序的情况下禁止类的对象创建?

2024-09-27 00:17:13 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我现在正在学习python,我想知道是否有一种方法可以让一个类成为其他类的超类,而不允许直接从它创建对象。我试过删除构造函数方法,但这并不能阻止实例化它只会使对象为空,我也试过引发错误,但会终止程序,我不想这样做,从技术上讲,它不会阻止实例化它只是通过终止程序使对象不可访问。i、 电子邮件:

class MySuperClass():
    def __init__(self):
        raise Exception("Cannot create object directly from base class")

我也尝试过在它里面引发一个异常

try:
    class MySuperClass():
        def __init__(self):
            raise ValueError
except:
    print("Cannot create object directly from base class")

这仍然不能阻止对象的创建,我也尝试过将这一行放入构造函数del self,但似乎没有任何效果。有什么想法吗?提前谢谢。你知道吗


Tags: 对象实例方法fromself程序objectinit
1条回答
网友
1楼 · 发布于 2024-09-27 00:17:13

Python类有一个__new__方法,当您创建实例并返回实例时,会调用该方法。因此,下面的代码将起作用。你知道吗

class MySuperClass(object):
    def __new__(cls,*args):
        if cls is MySuperClass:
            return None
        return object.__new__(cls,*args)

任何创建MySuperClass实例的尝试都会给您None。然而,子类是可以建立的。你知道吗

相关问题 更多 >

    热门问题