Python class 具有可变属性名称的工厂

Python class factory with variable attribute names

我正在创建一个 Django 应用程序,在开发过程中我创建了许多具有非常相似结构的 类,例如:

class OneAPIListView(generics.ListAPIView):
    queryset = models.One.objects.all()
    serializer_class = serializers.OneSerializer
    filter_class = OneFilterSet

class TwoAPIListView(generics.ListAPIView):
    queryset = models.Two.objects.all()
    serializer_class = serializers.TwoSerializer
    filter_class = TwoFilterSet

...
class <Name>APIListView(generics.ListAPIView):
    queryset = models.<Name>.objects.all()
    serializer_class = serializers.<Name>Serializer
    filter_class = <Name>FilterSet

我想知道是否有办法从字符串列表 ["One", "Two", ..., <Name>] 中自动生成这些 类。我看到在其他 SO 问题 like this 中有 meta类,例如我可以做类似

的事情
<Name> = type(<Name> + "APIListView", (generics.ListAPIView,), {'queryset' : ???})

但我不确定在我的情况下要将什么放入 ???,因为该变量是对象名称的一部分。

就放{'queryset': getattr(models, name).objects.all()}等等。 getattr is important to know about if you're going to be doing any kind of metaprogramming. Occasionally setattr 也一样,但不那么频繁,特别是如果你只是用 type(...).

构建 类