避免在Python中创建类实例

时间:2014-06-05 18:51:53

标签: python class python-2.7 object

当我尝试编写一小段代码以避免在Python 2.7中创建类的实例时,我遇到了一个小麻烦。问题是,当我没有扩展对象'并试图在'__new__'方法中引发异常时,'__init__'方法被调用(这意味着对象被创建好了)并且流程继续。但是,当我确实延伸“对象”时,事情似乎按预期工作,这提高了例外。

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

我在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)    

1 个答案:

答案 0 :(得分:1)

此类行为的原因是使用旧式类。这些课程没有__new__()静态方法。以下是Guido van Rossum的辉煌article,描述了新式和旧式课程之间的区别。