【问题标题】:Python inheritance: create child object in parent classPython继承:在父类中创建子对象
【发布时间】:2018-02-05 16:24:27
【问题描述】:

我有一个父类,它有一个返回新对象的方法。我希望该对象与 self 具有相同的类型(即,如果在 Parent 类中调用 Parent,如果在 Child 实例中调用 Child)。

class Parent(object):
    def __init__(self,param):
        self.param = param

    def copy(self):
        new_param = some_complicated_stuff(self.param)
        return Parent(new_param)

class Child(Parent):
    pass

C = Child(param)
D = C.copy()

这里的D = C.copy() 将是Parent 类型,而不管C 是什么类。我希望复制返回与C 相同类的实例,同时将“some_complicated_stuff”部分保留在父类中以避免代码重复。

上下文:Parent 是一个抽象组结构,“复制”返回子组(进行一系列代数运算),并且我有许多不同的 Child 类使用这种方法。

【问题讨论】:

  • type(self)(new_param)

标签: python inheritance


【解决方案1】:

您可以使用每个实例在__class__ 下都有一个指向其类的指针:

class Parent(object):
    def __init__(self,param):
        self.param = param

    def copy(self):
        new_param = some_complicated_stuff(self.param)
        return self.__class__(new_param)

上面的类是Parent,而派生类是Child

除了self.__class__,您还可以使用type(self),正如@Eli Korvigo 所说的in the comments,或所说的here

【讨论】:

  • 完美。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-17
  • 2020-03-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多