当我试图编写一小段代码以避免在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)
这种行为的原因是使用旧式类。这些类没有
__new__()
静态方法。下面是Guido van Rossum的brilliancearticle,描述了新样式和旧样式类之间的区别。你知道吗相关问题 更多 >
编程相关推荐