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

时间:2016-04-16 23:07:44

标签: python django

我试图理解模型在Django中是如何工作的,所以我要浏览源代码并将其绘制出来。

我仍然坚持使用forms.widgets.py中的这个特定功能,我想知道是否有人可以解释它。谢谢。

"类型"论证意味着? " "?中的参数是什么?我知道这是一个新的课程,但这是我的理解程度。

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

2 个答案:

答案 0 :(得分:1)

键入该位置意味着它是该类的基类。有意义的是它定义了一种类型的类' (定义为提供媒体的类)。

是实例创建的第一步。它首先被调用,并负责返回您班级的新实例。相反, init 不会返回任何内容;它只负责在创建实例后初始化实例。

看起来你的新参数按名称描述新类。名称中指定的NAME,base中的基类和atters中为类定义的attrs。但需要更多代码才能确定。

答案 1 :(得分:1)

This answer explains Python metaclasses and what type is

  

元类是类的类。就像类定义了类的实例的行为一样,元类定义了类的行为方式。类是元类的实例。

     

type 是Python中常用的元类。如果你想知道,是的, type 本身就是一个类,它是它自己的类型。 ...要在Python中创建自己的元类,你真的只想继承 type