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

Python:如何使用来自父级的isinstance来确定它是否是特定的子级,python,inheritance,recursion,isinstance,Python,Inheritance,Recursion,Isinstance,我有几节课 class Parent(): def DoThing(): if isinstance(self, 'child1'): DoSomething() elif: DoSomethingElse() import Parent class Child1(Parent): def DoThing(): #Do some things here super.D

我有几节课

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()
我遇到的问题是,我想检查类的实例是父类本身还是子类之一

失败的地方在于,在解释父对象时,进程失败,因为解释器不知道Child1是什么。我无法导入Child1,因为这会导致递归

通过在parent and child1中定义一个方法,我创建了一个解决方案

def IsChild1Instance(self):
    return True/False

有更好更干净的方法吗?

您的父类不应该关心子类。请改用不同的方法实现:

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

您的父类不应该关心子类。请改用不同的方法实现:

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