我想知道为什么我们要为django.like这样的模型类(如CharField
)指定参数名称。
first_name = models.CharField(max_length=40, blank=True)
为什么不
first_name = models.CharField(40, True)
在java中我们像这样调用new charField(40,true)
。如果它们是默认参数,我们在构造函数的定义中指定它们(在java中)。
为什么我们在这里写。请解释。
答案 0 :(得分:1)
您在java中看到的内容称为positional arguments
,其中参数始终按特定顺序排列。但是,Python支持两种类型的参数:positional arguments and keyword arguments。
关键字参数的优点在于,在使用函数时,您不必担心为方法(或类构造函数)中使用的所有参数定义值。
您可以使用identifier
例如在您的情况下max_length
和blank
并保留其余参数。
如果查看__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_length
和blank
,因为这就是您所需要的。