python中父调用抽象方法

python中父调用抽象方法,python,django,python-2.7,python-3.x,Python,Django,Python 2.7,Python 3.x,我是python新手。我想在父类中定义一些抽象方法并使用它们。我写了这样的代码 class BaseListAPI(APIView): __metaclass__ = abc.ABCMeta def get(self, request): search_object, start, count = tools.handlers.read_get_request_data(request.GET) order_by = requ

我是python新手。我想在父类中定义一些抽象方法并使用它们。我写了这样的代码

class BaseListAPI(APIView):
    __metaclass__  = abc.ABCMeta

    def get(self, request):
        search_object, start, count = 
        tools.handlers.read_get_request_data(request.GET)
        order_by = request.GET.get('order_by')

        return get_successful_response(self.get_query_set.list(
            without_user_serializer=self.get_serializer,
            search_object=search_object,
            start=start,
            count=count,
            order_by=order_by
        ))

    @abc.abstractmethod
    def get_query_set(self):
        """Method that should do something."""

    @abc.abstractmethod
    def get_serializer(self):
        """this method gets the serializer"""


class TourListListAPI(BaseListAPI):
    def get_query_set(self):
        return models.Tour.objects

    def get_serializer(self):
        return without_user.TourSerializer

例如,当我调用self.get\u query\u set()时,我希望调用子函数,但从未调用它,相反,调用抽象父方法会导致错误!!我错过了什么?

我刚刚犯了一个愚蠢的错误!它不起作用,因为当调用函数是父类时,它没有放括号!现在这工作就像一个魅力

class BaseListAPI(APIView):
    __metaclass__  = abc.ABCMeta

    def get(self, request):
        search_object, start, count = 
        tools.handlers.read_get_request_data(request.GET)
        order_by = request.GET.get('order_by')

        return get_successful_response(self.get_query_set().list(
            without_user_serializer=self.get_serializer(),
            search_object=search_object,
            start=start,
            count=count,
            order_by=order_by
        ))

    @abc.abstractmethod
    def get_query_set(self):
        """Method that should do something."""

    @abc.abstractmethod
    def get_serializer(self):
        """this method gets the serializer"""

我只是犯了个愚蠢的错误!它不起作用,因为当调用函数是父类时,它没有放括号!现在这工作就像一个魅力

class BaseListAPI(APIView):
    __metaclass__  = abc.ABCMeta

    def get(self, request):
        search_object, start, count = 
        tools.handlers.read_get_request_data(request.GET)
        order_by = request.GET.get('order_by')

        return get_successful_response(self.get_query_set().list(
            without_user_serializer=self.get_serializer(),
            search_object=search_object,
            start=start,
            count=count,
            order_by=order_by
        ))

    @abc.abstractmethod
    def get_query_set(self):
        """Method that should do something."""

    @abc.abstractmethod
    def get_serializer(self):
        """this method gets the serializer"""

据我所知,您的代码应该可以正常工作,所以问题在于您没有发布的部分。请发布调用代码(触发错误所需的最低限度)、完整匹配的回溯,并在代码段中添加缺少的导入-我假设
APIView
来自django rest framework,但这只是一个猜测。据我所知,您的代码应该可以正常工作,所以问题在于您没有发布的部分。请发布调用代码(触发错误所需的最低限度)、完整匹配的回溯,并在代码段中添加缺少的导入-我假设
APIView
来自django rest framework,但这是一个猜测。