有没有一种方法可以使用替代构造函数类方法进行子类化?

时间:2020-07-30 04:35:37

标签: python class methods parent-child class-method

例如,说我有一个父类:

class Foo:
 def __init__(self, x, y):
  self.x = x
  self.y = y

 @classmethod
 def special_pointx(cls, y):
  return cls(1, y)

然后我想使用special_pointx类方法构造函数创建Foo的子类。有办法吗?

我最初的想法是:

class Bar(Foo.special_pointx):
 pass

但是在这种情况下,我不知道如何将参数传递给special_pointx,无论如何,我都会得到一个TypeError,说“方法期望2个参数,得到3个”。因此,我尝试了:

class Bar(Foo):
 def __init__(self, y, z):
  self.z = z
  super(Bar, self).special_pointx(y)

但这似乎也不起作用。我收到错误:“ special_pointx()接受1个位置参数,但给出2个。”任何帮助,将不胜感激。我希望最终结果是具有属性x = 1,y = y和z = z的Bar类。

编辑:好像我最初在special_pointx定义中缺少cls(感谢ewong),这就是为什么我遇到那些位置参数错误,但是现在修复后,我在__init__和special_pointx之间得到了RecursionError。我希望special_pointx会调用Foo .__ init__,但似乎它正在调用Bar .__ init__?

0 个答案:

没有答案