如何从父级获取类类型

时间:2015-01-05 19:55:13

标签: python python-2.7 tastypie

我有一个父类BaseResource,我在其中定义了一个对所有孩子都应该是共同的行为。我正在覆盖ModelResource.update_in_place,这是在某些django-tastypie模型中定义的。

class BaseResource(ModelResource):

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

现在我Child1ResourceChild2Resource都继承了BaseResource。如何在父级内部获取子资源的类型?

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

1 个答案:

答案 0 :(得分:3)

您需要self.__class__,而不是self.__class__()(parens是调用运算符,因此后者返回self.__class__实例,而不是类本身。

但无论如何:如何使用super(),你真的想在这里传递BaseResource作为第一个参数 - 整个要点是传递类所在的定义方法,而不是调用方法的类(由于可以使用self.__class__进行检查,因此没有意义。)