Django - Атрибути и декларация за клас

Съдържание
Джанго обработва декларативния начин за задаване на класовете, които ще използва, това означава, че можем да създаваме модели от метакласове вече дефинирани, с които можем да получим основни и разширени функционалности, само като направим персонализиран клас, благодарение на всички инструменти, включени в рамка.
Една от точките, които може би ни остава, е как да знаем, начина, по който рамката прави нещата, тоест в какъв ред декларира атрибутите, които поставяме в класовете.
Сортиране на атрибутите на класа
Когато използваме декларативния синтаксис, който имаме на разположение в Джанго, може да възникне точка на объркване и това е редът, в който са зададени декларираните стойности, причината за това е, че Python борави с речниците си по разхвърлян начин; Обикновено това не би представлявало голям проблем, но при обработка на пространства от имена или пространства от имена, ако трябва да направим определена итерация на атрибутите, е важно да знаем реда, в който са присвоени стойностите, тъй като няма да имаме препятствие.
За да имаме пълен контрол върху нашето приложение, можем по някакъв начин да знаем какъв е редът, в който се присвояват стойностите, като по този начин се избягва необходимостта от присвояване на произволен ред.
За да постигнем това подреждане, това, което можем да направим, е, че всеки атрибут носи сам по себе си следа от позицията си в последователността, за това трябва да накараме нашите класове да наследят от базов клас, който може да преброи колко пъти класът се създава и по този начин да присвои корелативно число към всеки от тях:
 клас BaseAttribute (обект): creation_counter = 1 def __init __ (self): self.creation_counter = BaseAttribute.creation_counter BaseAttribute.creation_counter + = 1 

В примера на кода виждаме следното:
Всеки екземпляр на Обект имам пространство на имената или различно пространство от имена от класовете, така че всеки от екземплярите на този клас ще има брояч за създаване, който можем да използваме за сортиране на обектите в реда, в който са създадени.
Това може да не е единственото решение на поставения проблем, но това е начинът, по който Джанго сортира полетата за модели и формуляри.
Както виждаме, проблемът беше само пример за това как Джанго като рамка обработва класове и тяхното съдържание, използвайки ресурси на Python.
Класова декларация
С всички класове, които имаме в модул, създаването на приложен клас е толкова просто, колкото дефинирането на подклас и добавянето на неговите атрибути.
Различните съществуващи рамки ще имат различни имена за атрибутите на класа и дори ще имат различни изисквания за това как се изискват класовете или формата и комбинациите, в които те трябва да бъдат приложени, може да достигне точката на запазени имена, които биха могли причиняват конфликти, ако е създаден атрибут с това име. Тези проблеми са редки, тъй като с добра практика трябва да избягваме този тип ситуации при разработването на нова рамка; общото правило е да се даде на разработчиците възможно най -голяма гъвкавост, с това постигаме, че рамката не е пречка, а не помощ.
На следващото изображение ще видим как се декларира класът Контакт в приложение в Django:

Увеличете

С този прост код е достатъчно да позволим на рамката да предава голям брой функционалности на нашия модел, без да се налага разработчикът да ги добавя ръчно.
Друго нещо, което трябва да запомните, е, че това е код Python, така че не трябва да се чувстваме ограничени, тъй като практически всеки валиден код в Python ще ни помогне да разширим нашите класове.Хареса ли ви и помогнахте на този урок?Можете да възнаградите автора, като натиснете този бутон, за да му дадете положителна точка

Така ще помогнете за развитието на сайта, сподели с приятелите си

wave wave wave wave wave