例如,说我有一个父类:
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__?