Ok。私はこの質問の言い回しに苦労してきました。私はサブクラスを持っています。呼び出されたときに特定のことが真である場合、その基本クラスのインスタンスを作成したいと思います。__ 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 に警告を発行させるにはどうすればよいですか?