如何从 parent 获取 class 类型

How can I get class type from parent

我有一个 parent class BaseResource,我在其中定义了所有 child 应该共有的行为。我正在覆盖某些 django-tastypie 模型中定义的 ModelResource.update_in_place

class BaseResource(ModelResource):

    def update_in_place(self, ...):
        ...
        return super(ChildResource, self).update_in_place(...)

现在我有 Child1ResourceChild2Resource,它们都继承自 BaseResource。如何获取 parent 中 child 资源的类型?

我试过 self.__class__(),但我得到了 must be type, not Child1Resource

你需要 self.__class__,而不是 self.__class__()(括号是调用运算符,所以后面的 returns 是 self.__class__ 实例,而不是 class本身。

但无论如何:那是 而不是 如何使用 super(),你真的想传递 BaseResource 作为这里的第一个参数 - 重点是传递定义方法的 class,而不是调用方法的 class(这将毫无意义,因为可以使用 self.__class__ 检查它)。