Python:如何使用父级的 isinstance 来确定它是否是特定的子级

use*_*514 1 python recursion inheritance isinstance

我有几节课

class Parent():
    def DoThing():
        if isinstance(self, 'child1'):
            DoSomething()
        elif:
            DoSomethingElse()

import Parent
class Child1(Parent):
    def DoThing():
        #Do some things here
        super.DoThing()

import Parent
class Child2(Parent)
    def DoThing():
        #Do other things
        super.DoThing()
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是我想检查该类的实例是父级本身还是子级之一。

失败点是在解释 Parent 时,该过程失败,因为解释器不知道 Child1 是什么。我无法导入 Child1,因为这会导致递归。

我通过在parent和child1中定义一个方法来解决这个问题。

def IsChild1Instance(self):
    return True/False
Run Code Online (Sandbox Code Playgroud)

有没有更好、更干净的方法来做到这一点?

Mar*_*ers 5

你的父类不应该关心子类。使用方法的不同实现来代替:

class Parent:
    def do_thing(self):
        self.do_something_delegated()

    def do_something_delegated(self):
        pass

class Child1(Parent):
    def do_something_delegated(self):
        # do child1 specific things

class Child2(Parent)
    def do_something_delegated(self):
        # do child2 specific things
Run Code Online (Sandbox Code Playgroud)