Skip to main content
 首页 » 编程设计

python之试图从 Django 源码中理解这个函数

2024年10月24日4352php

我正在尝试了解模型形式在 Django 中的工作原理,因此我将浏览源代码并绘制图表。

虽然我在 forms.widgets.py 中停留在这个特定的函数上,但我想知道是否有人可以解释它。谢谢。

“类型”参数是什么意思? “new”中的参数是什么?我知道这是在返回一个新类(class),但这就是我的理解范围。

Here is a link到原始代码。

class MediaDefiningClass(type): 
    """ 
    Metaclass for classes that can have media definitions. 
    """ 
    def __new__(mcs, name, bases, attrs): 
        new_class = super(MediaDefiningClass, mcs).__new__(mcs, name, bases, attrs) 
 
        if 'media' not in attrs: 
            new_class.media = media_property(new_class) 
 
        return new_class 

请您参考如下方法:

在该位置键入表示它是该类的基类。有意义的是它定义了“类的类型”(定义为提供媒体的类)。

new 是创建实例的第一步。它首先被调用,并负责返回你的类的一个新实例。相反,init 不返回任何东西;它只负责实例创建后的初始化。

看起来您的新参数通过名称描述了新类。 name 中指定的 NAME,bases 中的基类和 atters 中为类定义的属性。但需要更多代码才能确定。