2016-11-21 2 views
-1

Ich möchte wissen, dass, warum geben wir Namen für Parameter für Modellklassen wie 10 in django.like this zum Beispiel.Warum benannte Argumente für Django-Modellklassen

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

warum nicht

first_name = models.CharField(40, True) 

in Java wir new charField(40,true) wie this.If nennen sie Standardargumente sind wir diese in der Definition von Konstruktor (in Java) angeben.

Warum schreiben wir hier. Bitte erklären.

+0

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

Antwort

1

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.

+0

danke für die Antwort. Ich habe es jetzt verstanden. – saiyan

Verwandte Themen