1 运行django项目
class Foo(objiect,metaclass=MyType):
v1=123
v2=456
#类不是先创建,先创建值。
#好比
Foo=MyType("foo",(),{"v1":123,"v2":456})
#所以是值v1=123先创建,如果是有方法也是先创建方法,打包传递给MyType,才将类创建出来。
创建字段对象
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import serializers
from api import models
# 先进行实例化对象
class InfoSerializer(serializers.Serializer):
id = serializers.IntegerField()
title = serializers.CharField()
order = serializers.IntegerField()
#只对这一步进行分析id = serializers.IntegerField()
class Field:
_creation_counter = 0
def __init__(self, *, read_only=False...):
self._creation_counter = Field._creation_counter
Field._creation_counter += 1 #这个玩意需要注意
class IntegerField(Field):
def __init__(self, **kwargs):
...#执行完一些功能
super().__init__(**kwargs)#然后执行父类的init,然后父类是谁 field
class InfoSerializer(serializers.Serializer):
id = serializers.IntegerField() # 对象,内部_creation_counter=0
title = serializers.CharField() # 对象,内部_creation_counter=1
order = serializers.IntegerField # 对象,内部_creation_counter=2
后续会通过这个计数器排序,以此来实现字段的先后执行。