好的。我一直在努力表达这个问题。我有一个子类。如果某些事情在调用时为真,我希望它创建其基类的实例。我会用 __ new __ 做这个吗?如果是这样,我会怎么做?
这是我的意思的一个例子:
import warnings
class A:
def __init__(self, *args):
self.val = list(args)
def __str__(self):
return "A"
class B(A):
def __init__(self, *args):
if len(args)==3:
A.__init__(self, *args)
return
else:
warnings.warn("Making an A object!")
return A(*args)
def __str__(self):
return "B"
def extramethod1(self):
print "This method is only in a B object"
x = B(1, 2, 3)
Warning (from warnings module)
File '/test.py', line 14
UserWarning: Making an A object!
y = B(1, 2)
print x, y
'A B'
y.extramethod1()
'This method is only in a B object'
另外,当它这样做时,我如何让 B 发出警告?