我有一个父类BaseResource
,我在其中定义了一个对所有孩子都应该是共同的行为。我正在覆盖ModelResource.update_in_place
,这是在某些django-tastypie模型中定义的。
class BaseResource(ModelResource):
def update_in_place(self, ...):
...
return super(ChildResource, self).update_in_place(...)
现在我Child1Resource
,Child2Resource
都继承了BaseResource
。如何在父级内部获取子资源的类型?
我已经尝试了self.__class__()
,但我得到must be type, not Child1Resource
。
答案 0 :(得分:3)
您需要self.__class__
,而不是self.__class__()
(parens是调用运算符,因此后者返回self.__class__
实例,而不是类本身。
但无论如何:不如何使用super()
,你真的想在这里传递BaseResource
作为第一个参数 - 整个要点是传递类所在的定义方法,而不是调用方法的类(由于可以使用self.__class__
进行检查,因此没有意义。)