为什么为django模型类命名参数

时间:2016-11-21 06:43:49

标签: python django python-3.x django-models

我想知道为什么我们要为django.like这样的模型类(如CharField)指定参数名称。

first_name = models.CharField(max_length=40, blank=True)

为什么不

first_name = models.CharField(40, True)

在java中我们像这样调用new charField(40,true)。如果它们是默认参数,我们在构造函数的定义中指定它们(在java中)。

为什么我们在这里写。请解释。

1 个答案:

答案 0 :(得分:1)

您在java中看到的内容称为positional arguments,其中参数始终按特定顺序排列。但是,Python支持两种类型的参数:positional arguments and keyword arguments

关键字参数的优点在于,在使用函数时,您不必担心为方法(或类构造函数)中使用的所有参数定义值。

您可以使用identifier例如在您的情况下max_lengthblank并保留其余参数。

如果查看__init__类(超级CharField )的Field方法,您会发现其中定义了许多关键字参数:

def __init__(self, verbose_name=None, name=None, primary_key=False,
        max_length=None, unique=False, blank=False, null=False,
        db_index=False, rel=None, default=NOT_PROVIDED, editable=True,
        serialize=True, unique_for_date=None, unique_for_month=None,
        unique_for_year=None, choices=None, help_text='', db_column=None,
        db_tablespace=None, auto_created=False, validators=[],
        error_messages=None):

其中,您刚刚定义了max_lengthblank,因为这就是您所需要的。