[英]Trying to understand Django source code and cause of missing argument TypeError
[英]Trying to understand this function from Django source code
我试图了解模型形式在 Django 中是如何工作的,所以我正在浏览源代码,并绘制出来。
不过,我一直坚持在 forms.widgets.py 中的这个特定功能,我想知道是否有人可以解释它。 谢谢你。
“类型”参数是什么意思? “新”中的参数是什么? 我知道这是返回一个新课程,但这就是我的理解范围。
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 中为类定义的属性。 但需要更多代码才能确定。
元类是类的类。 就像类定义类的实例的行为方式一样,元类定义类的行为方式。 类是元类的实例。
type是 Python 中常见的元类。 如果您想知道,是的, type本身就是一个类,并且它是它自己的类型。 ...要在 Python 中创建您自己的元类,您实际上只想将type子类化。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.