我想定义一个类 AorB,这样所有 A 都是 AorB,所有 B 都是 AorB,而这些都是 AorB。当然,A 和 B 应该是 AorB 的子类。问题在于AorB.__init__
,当我无法说服自己时,它应该是别的东西。我可以定义一个 AorB 工厂,但如果可能的话,我宁愿拥有 AorB 构造函数。
class AorB:
def __init__(self,par):
if par: self=A(par) #!
else: self=B() #!
@staticmethod
def from_par(par):
if par: return A(par)
else: return B()
class A(AorB):
def __init__(self,par):
self.par=par
class B(AorB):
def __init__(self):
pass
print(
AorB.from_par(5),
AorB.from_par(0),
AorB(5),
AorB(0),
sep="\n")
我知道分配给 self 在这里不起作用,但我只是想表明意图。正如我所说, factory (from_par) 工作正常,我只想将其称为AorB
,而不是AorB.from_par
。
PS。我知道,__init__
可能为时已晚,自我的类型已经确定。随意在您的答案中使用元类。是时候让我了解一些关于它们的有用信息了。:-)