Was Sie in Java sehen, heißt positional arguments
, wo die Argumente immer in einer bestimmten Reihenfolge sind. Python unterstützt jedoch zwei Arten von Argumenten: positional arguments and keyword arguments.
Die Schönheit der Schlüsselwortargumente ist, dass Sie sich bei der Verwendung der Funktion nicht darum kümmern müssen, Werte für alle in der Methode (oder Klassenkonstruktor) verwendeten Argumente zu definieren.
Sie können einfach eine identifier
z. in Ihrem Fall max_length
und blank
und lassen Sie den Rest der Argumente, wie sie sind.
Wenn Sie an der __init__
Methode der Field
Klasse aussehen (geordnete Klasse von CharField), Sie werden eine Reihe von Keyword-Argumente dort definiert finden:
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):
Von diesen
, die Sie gerade
max_length
definiert und
blank
weil das ist, was Sie benötigt haben.
Insbesondere Python hat keine Methode überladen wie Java, so dass Sie nicht mehrere Versionen der gleichen Methode mit verschiedenen Argumenten haben können. Da 'max_length' und' blank' nicht die ersten beiden Positionsargumente sind, müssen Sie 'models.CharField (None, None, False, 40, False, True)' 'verwenden, um jeden Standardwert des vorhergehende Positionsargumente. Sie können sehen, warum Keyword-Argumente bevorzugt werden. – knbk