避免在Python中创建类实例

2024-09-24 22:31:30 发布

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

当我试图编写一小段代码以避免在python2.7中创建类的实例时,遇到了一个小麻烦。问题是,当我没有扩展object'并试图在'__new__'方法中引发异常时,'__init__'方法刚刚被调用(这意味着对象创建得很好),流继续。但是,当我扩展了“object”时,事情似乎像预期的那样工作,这引发了一个例外。你知道吗

我想知道这可能是什么原因。你知道吗

我在Stackoverflow里找不到答案,如果你们觉得这是重复的,最好能给我指出正确的方向。你知道吗

from classcreator import AbstractionException

class test():
    def __new__(self):
        try:
            raise AbstractionException("Can't instantiate class")
        except AbstractionException:
            print ('OOPS !!! ')

    def __init__(self):
        self.name='Hello'

    def __str__(self):
        return self.name

x=test()
print(x)    

Tags: 对象实例方法代码nametestselfnew
1条回答
网友
1楼 · 发布于 2024-09-24 22:31:30

这种行为的原因是使用旧式类。这些类没有__new__()静态方法。下面是Guido van Rossum的brilliancearticle,描述了新样式和旧样式类之间的区别。你知道吗

相关问题 更多 >