用于嵌套类

时间:2016-02-08 02:09:43

标签: python class inner-classes

在什么情况下嵌套类很有用,它们在Django中被大量使用,

class SignUpForm(forms.ModelForm):
    class Meta:
        model = SignUp
        fields = ['full_name','email']

但我认为使用其他结构可以实现同样的目标,那么当我们使用嵌套类时我们会得到什么呢?

由于

1 个答案:

答案 0 :(得分:0)

Django很不寻常。

你看,Django大量使用名为metaclass的幕后功能。在Python 2中,嵌套类是为元类提供不严格属于类本身的信息的最干净,最直接的方法,例如表单所基于的模型。

在Python 3中,元类可以接受其他关键字参数,如下所示:

class Foo(Bar, baz=qux):
    ...

这些参数直接传递给元类构造函数,并且比嵌套类更清晰。

我不知道Django是否计划采用这种语法,但出于向后兼容的原因,嵌套类语法不太可能完全消失。