Bevor die automatische Vervollständigung durch Sprachserver allgegenwärtig war, spielte es keine Rolle, ob der Code so geschrieben war, dass die automatische Vervollständigung einfach war. Beliebte Texteditoren wie Sublime waren nicht in der Lage, den Code ausreichend zu verstehen, um sinnvolle Vorschläge zu liefern. Programmierer haben entweder die Befehle ihrer Abhängigkeiten auswendig gelernt oder auf die Dokumentation verwiesen.
Im Jahr 2024 ist Autovervollständigung allgegenwärtig, aber unsere Pakete haben es nicht unbedingt einfacher gemacht. Nehmen Sie dieses Beispiel aus der Dokumentation von Factory Boy:
import factory from datetime import datetime from .models import User class UserFactory(factory.Factory): class Meta: model = User arrival = factory.Faker( 'date_between_dates', date_start=datetime.date(2020, 1, 1), date_end=datetime.date(2020, 5, 31), )
Das Arrival-Attribut ruft die date_between_dates()-Methode von Faker auf. Leider sagt Ihnen „factory.Faker()“ nicht, welche Faker-Methoden verfügbar sind, und es sagt Ihnen nicht, welche Parameter eine Faker-Methode akzeptiert, sobald Sie eine ausgewählt haben. Dieser Code verringert die Vorteile, die Sprachserver bieten.
Sie können eine automatische Vervollständigung erhalten, während Sie Faker mit „factory_boy“ verwenden, indem Sie einen Faker-Aufruf in „factory.LazyFunction()“ einbinden:
import factory from datetime import datetime from .models import User fake = Faker() class UserFactory(factory.Factory): class Meta: model = User arrival = factory.LazyFunction(lambda: fake.date_between_dates( date_start=datetime.date(2020, 1, 1), date_end=datetime.date(2020, 5, 31), ))
Funktionen, die an Factory.LazyFunction() übergeben werden, werten aus, wenn die Factory eine Instanz erstellt. Wir verpacken unseren Faker-Aufruf in ein Lambda, damit wir ihm Argumente liefern können. Und Ihr Sprachserver kann Ihnen zeigen, welche Parameter fake.date_between_dates() akzeptiert.
Der Einrichtungsaufwand ist geringer, wenn die Faker-Funktion keine Argumente benötigt. So können Sie „factory.LazyFunction()“ mit den Methoden „first_name()“ und „last_name()“ von Faker verwenden:
import factory from datetime import datetime from .models import User fake = Faker() class UserFactory(factory.Factory): class Meta: model = User first_name = factory.LazyFunction(fake.first_name) last_name = factory.LazyFunction(fake.last_name)
Der resultierende Code ist etwas länger, als er wäre, wenn wir „factory.Faker()“ verwendet hätten, aber die Unterstützung durch den Sprachserver ist es mir wert. Ohne sie müsste ich möglicherweise ständig die Dokumentation überprüfen.
Wenn es zu viel zum Tippen ist, können Sie es jederzeit auf etwas Kürzeres umstellen:
from factory import Factory, LazyFunction as LazyFn from datetime import datetime from .models import User fake = Faker() class UserFactory(Factory): class Meta: model = User first_name = LazyFn(fake.first_name) last_name = LazyFn(fake.last_name)
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3