ДинамичСскоС созданиС: ПошаговоС руководство. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ использованиС динамичСских ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² C #

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

ДинамичСскоС созданиС ΠΈ компиляция исходного ΠΊΠΎΠ΄Π° — .NET Framework

Twitter LinkedIn Facebook АдрСс элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹

  • Π‘Ρ‚Π°Ρ‚ΡŒΡ
  • Π§Ρ‚Π΅Π½ΠΈΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 2Β ΠΌΠΈΠ½

ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° . NET Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ модСлью Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠΎΠ΄Π° (CodeDOM), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹Π΄Π°ΡŽΡ‚ исходный ΠΊΠΎΠ΄, ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ исходный ΠΊΠΎΠ΄ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… языках программирования Π²ΠΎ врСмя выполнСния Π½Π° основС ΠΎΠ΄Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠ΄ для отрисовки.

Для прСдставлСния исходного ΠΊΠΎΠ΄Π° элСмСнты CodeDOM ΡΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ, образуя структуру Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΠ·Π²Π΅ΡΡ‚Π½ΡƒΡŽ ΠΊΠ°ΠΊ Π³Ρ€Π°Ρ„ CodeDOM, которая ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΡƒΠ΅Ρ‚ структуру Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ исходного ΠΊΠΎΠ΄Π°.

ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ ΠΈΠΌΠ΅Π½ System.CodeDom опрСдСляСт Ρ‚ΠΈΠΏΡ‹, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… логичСская структура исходного ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ прСдставлСна нСзависимо ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ языка программирования. ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ ΠΈΠΌΠ΅Π½ System.CodeDom.Compiler опрСдСляСт Ρ‚ΠΈΠΏΡ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ для формирования исходного ΠΊΠΎΠ΄Π° Π½Π° основС Π³Ρ€Π°Ρ„ΠΎΠ² CodeDOM ΠΈ управлСния компиляциСй исходного ΠΊΠΎΠ΄Π° Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… языках. Набор ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… языков ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ ΠΈΠ»ΠΈ поставщиками компиляторов.

НСзависимоС ΠΎΡ‚ языка ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ исходного ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Ссли ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ исходный ΠΊΠΎΠ΄ для ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… языках ΠΈΠ»ΠΈ Ссли ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ язык Π·Π°Ρ€Π°Π½Π΅Π΅ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½. НапримСр, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ конструкторы ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ модСль CodeDOM Π² качСствС интСрфСйса абстракции ΠΎΡ‚ языка для получСния исходного ΠΊΠΎΠ΄Π° Π½Π° Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠΌ языкС программирования, Ссли имССтся ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° CodeDOM для этого языка.

ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° .NET Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΊΠΎΠ΄Π° ΠΈ компиляторы ΠΊΠΎΠ΄Π° для CSharpCodeProvider, JScriptCodeProviderΠΈ VBCodeProvider.

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ Ρ€Π°Π·Π΄Π΅Π»Π°

  • ИспользованиС CodeDOM

    ΠžΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ ΠΎΠ±Ρ‰ΠΈΠ΅ случаи примСнСния, Π° Ρ‚Π°ΠΊΠΆΠ΅ дСмонстрируСтся созданиС простого Π³Ρ€Π°Ρ„Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² с использованиСм CodeDOM.

  • Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ исходного ΠΊΠΎΠ΄Π° ΠΈ компиляция ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ· Π³Ρ€Π°Ρ„Π° CodeDOM

    ОписаниС способов формирования исходного ΠΊΠΎΠ΄Π° ΠΈ Π΅Π³ΠΎ компиляции внСшним компилятором с использованиСм классов, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π² пространствС ΠΈΠΌΠ΅Π½

    System.CodeDom.Compiler.

  • ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ руководство. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ XML-Ρ„Π°ΠΉΠ»Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ с использованиСм CodeDOM

    ОписаниС использования CodeDOM для формирования ΠΊΠΎΠ΄Π° с коммСнтариями ΠΊ XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΈ компиляции сформированного ΠΊΠΎΠ΄Π° для создания XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

  • ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ руководство. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ класса с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ CodeDOM

    ОписаниС использования CodeDOM для создания класса, содСрТащСго поля, свойства, ΠΌΠ΅Ρ‚ΠΎΠ΄, конструктор ΠΈ Ρ‚ΠΎΡ‡ΠΊΡƒ Π²Ρ…ΠΎΠ΄Π°.

Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ

  • System.CodeDom

    ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ элСмСнты, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ элСмСнты ΠΊΠΎΠ΄Π° Π½Π° языках программирования, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… для срСды CLR.

  • System.CodeDom.Compiler

    ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ интСрфСйсы для формирования ΠΈ компиляции ΠΊΠΎΠ΄Π° Π²ΠΎ врСмя выполнСния.

  • ΠšΡ€Π°Ρ‚ΠΊΠΈΠΉ справочник ΠΏΠΎ CodeDOM β€” здСсь Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ быстро Π½Π°ΠΉΡ‚ΠΈ элСмСнты CodeDOM, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ элСмСнты исходного ΠΊΠΎΠ΄Π°.

ДинамичСскоС созданиС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π² Angular (ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄) | by Alexander Bukhtatyy

ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π»: https://netbasal.com/dynamically-creating-components-with-angular-a7346f4a982d

Π’ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅, ΠΌΡ‹ ΠΈΠ·ΡƒΡ‡ΠΈΠΌ ΠΊΠ°ΠΊ динамичСский ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π² Angular.

Для Π½Π°Ρ‡Π°Π»Π° Π½Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚.

Для простоты ΠΌΡ‹ собираСмся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Ρ‚Π°ΡŒ простой ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ alert ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊ Input Ρ‚ΠΈΠΏ Π°Π»Π΅Ρ€Ρ‚Π°.

Π˜Ρ‚Π°ΠΊ, Ссли Π·Π°Π΄ΡƒΠΌΠ°Ρ‚ΡŒΡΡ Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ влСтся DOM элСмСнтом, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Ρ‚ΠΈΡŒ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ мСсто ΠΊΡƒΠ΄Π° ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ Π΅Π³ΠΎ.

Π’ Angular, Ρ‚Π°ΠΊΠΎΠ΅ мСсто называСтся container.

Π’ my-app ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅, ΠΌΡ‹ создадим ΡˆΠ°Π±Π»ΠΎΠ½Π½Ρ‹ΠΉ элСмСнт. ΠœΡ‹ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΏΠΎΠΌΠ΅Ρ‚ΠΈΠΌ Π΅Π³ΠΎ Ρ…ΡΡˆ символом (#)для обьявлСния ссылки ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ alertContainer. template элСмнСт являСтся Ρ‚Π΅ΠΌ самым мСстом, ΠΈΠ»ΠΈ Π² ΠΌΠΈΡ€Π΅ Angular , container.

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ любой DOM-элСмСнт ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŒ ссылку Π½Π° наш ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π² my-app ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅.

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŒ ссылку Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ ΠΈΡΠΏΠΎΠ»ΡŒΠ·Ρƒ ViewChild Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Π°ViewChild β€” это экзСмпляр ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΈΠ»ΠΈ DOM-элСмСнт, Π½ΠΎ Π² нашСм случаС Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŒ элСмСнт ΠΊΠ°ΠΊ ViewContainerRef.

Как слСдуСт ΠΈΠ· названия, ViewContainerRef являСтся ссылкой Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€. ViewContainerRef Ρ…Ρ€Π°Π½ΠΈΡ‚ ссылку Π½Π° ΡˆΠ°Π±Π»ΠΎΠ½Π½Ρ‹ΠΉ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ (наш ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€) ΠΈ Ρ‚Π°ΠΊ ΠΆΠ΅ прСдоставляСт API для создания ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².

You can see the nativeElement

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ 2 ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π½Π°ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ alert ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚.

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΌΡ‹ Π²Ρ‹Π·ΠΎΠ²Π΅ΠΌ createComponent() ΠΌΠ΅Ρ‚ΠΎΠ΄, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ добавиль Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ сСрвис.

ComponentFactoryResolver сСрвис прСдоставлСт ΠΎΠ΄ΠΈΠ½ основной ΠΌΠ΅Ρ‚ΠΎΠ΄ — resolveComponentFactory.

resolveComponentFactory() ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±Π΅Ρ€Π΅Ρ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ComponentFactory.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ ComponentFactory ΠΊΠ°ΠΊ ΠΎ ΠΎΠ±ΡŒΠ΅ΠΊΡ‚Π΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π½Π°Π΅Ρ‚ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹.

Как Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ ComponentFactory прСдоставляСт create() ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ использован Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° (ViewContainerRef ).

Π’Π΅ΠΏΠ΅Ρ€ΡŒ послСндний шаг.

Π”Π°Π²Π°ΠΉΡ‚Π΅ обьясню Ρ‡Ρ‚ΠΎ происходит шаг Π·Π° шагом.

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΊΠΎΠ³Π΄Π° Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π΅ прСдставлСниС, ΠΈΠ½Π°Ρ‡Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒΡΡ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€. Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ нСсколько ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².

ΠœΠ΅Ρ‚ΠΎΠ΄ resolveComponentFactory() ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ„Π°Π±Ρ€ΠΈΠΊΡƒ(Ρ€Π΅Ρ†Π΅ΠΏΡ‚) для создания этого ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°.

ΠœΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ createComponent() ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Π΅ΠΌΡƒ Ρ€Π΅Ρ†Π΅ΠΏΡ‚. Π’Π½ΡƒΡ‚Ρ€ΠΈ этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ create() ΠΈΠ· Ρ„Π°Π±Ρ€ΠΈΠΊΠΈ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ послС нашСго ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ ссылку Π½Π° наш Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, ΠΈ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΡΡ‚Ρ€Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· Input свойство Ρ‚ΠΈΠΏΠ°.

Π’Ρ‹ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ Π½Π° Output ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΊΠ°ΠΊ продСмонстрированно Π½ΠΈΠΆΠ΅:

И Π½Π΅ Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚:

ПослСдним шагом Π±ΡƒΠ΄Π΅Ρ‚ β€” Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ вашСго динамичСского ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π² entryComponents ΡΠ΅ΠΊΡ†ΠΈΡŽ вашСго модуля:

ДинамичСскоС созданиС Π±ΠΈΠ½ΠΎΠ² Π² Spring

спросил

ИзмСнСно 11 Π»Π΅Ρ‚, 3 мСсяца Π½Π°Π·Π°Π΄

ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΎ 7ΠΊ Ρ€Π°Π·

Π•ΡΡ‚ΡŒ Π»ΠΈ способ вСсной, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ поля bean-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π‘Π” ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½Ρ‹ΠΉ класс bean-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° — с Π³Π΅Ρ‚Ρ‚Π΅Ρ€Π°ΠΌΠΈ ΠΈ сСттСрами ΠΏΡ€ΠΈ запускС сСрвСра????

МнС Π½ΡƒΠΆΠ½ΠΎ это, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΌΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ настраиваСмым. .. ΠΊΠ°ΠΊ Ссли Π±Ρ‹ ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ, всС, Ρ‡Ρ‚ΠΎ ΠΌΠ½Π΅ потрСбуСтся, это Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π΅ Π² Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈ ΠΌΠ½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ доступны установщики ΠΈ Π³Π΅Ρ‚Ρ‚Π΅Ρ€Ρ‹ bean-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². .

Бпасибо

  • вСсна
  • динамичСский
  • javabeans
  • созданиС

1

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ для динамичСской рСгистрации bean-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ BeanDefinitionBuilder для этой Ρ†Π΅Π»ΠΈ. Π‘ΠΌ. ΠΎΠ±Ρ€Π°Π·Π΅Ρ† здСсь. Но, ΠΊΠ°ΠΊ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ @Darren, Π½Π΅ стоит ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π±ΠΈΠ½ Ρ‡Π΅Ρ€Π΅Π· поиск Π² Π‘Π”.

0

1: Π£Π»ΡƒΡ‡ΡˆΠΈΡ‚Π΅ свою ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ принятия

2: Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ Π²Ρ‹Π³ΠΎΠ΄Ρƒ ΠΈΠ· Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ORM (Hibernate ΠΈΠ»ΠΈ JPA). Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‰ΠΈΠΉΡΡ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΠΏΠΎΠ΄ΠΎΠΉΡ‚ΠΈ, β€” это шаблон Active Record, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ActiveJDBC.

Spring сам ΠΏΠΎ сСбС Π½Π΅ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ, Π½ΠΎ использованиС spring-jpa вмСстС с Hibernate ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚ΡŒ вас ΠΊ вашСй Ρ†Π΅Π»ΠΈ.

Если, OTOH, Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ автоматичСски сгСнСрированный ΠΊΠΎΠ΄, Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ Spring-Roo 9.0005

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π΅Ρ‰Π΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎΠ± этом. Π”Π°ΠΆΠ΅ Ссли Π²Ρ‹ сдСлали свои поля ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ настраиваСмыми, Π²Π°ΠΌ всС Ρ€Π°Π²Π½ΠΎ придСтся ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ для доступа ΠΊ Π½ΠΈΠΌ. И, учитывая, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ всС Ρ€Π°Π²Π½ΠΎ придСтся ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄, Π»ΡƒΡ‡ΡˆΠ΅ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ всС Π² ΠΊΠΎΠ΄Π΅. Π’Π°ΠΊ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‰Π΅.

2

Π—Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΈΠ»ΠΈ Π²ΠΎΠΉΠ΄ΠΈΡ‚Π΅ Π² систСму

Π—Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ΡΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Google

Π—Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‡Π΅Ρ€Π΅Π· Facebook

Π—Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ΡΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡΠ»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½ΡƒΡŽ ΠΏΠΎΡ‡Ρ‚Ρƒ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ

ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π³ΠΎΡΡ‚ΡŒ

ЭлСктронная ΠΏΠΎΡ‡Ρ‚Π°

ВрСбуСтся, Π½ΠΎ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ отобраТаСтся

ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π³ΠΎΡΡ‚ΡŒ

ЭлСктронная ΠΏΠΎΡ‡Ρ‚Π°

ВрСбуСтся, Π½ΠΎ Π½Π΅ отобраТаСтся

Ρ‚ΠΈΠΏΠΎΠ² β€” ДинамичСскоС созданиС Ρ‚ΠΈΠΏΠΎΠ² ΠΈ ΠΈΠΌΠ΅Π½Π° для встроСнных Ρ‚ΠΈΠΏΠΎΠ² β€” ДокумСнтация ΠΏΠΎ Python 3.

11.3

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄: Lib/types.py


Π­Ρ‚ΠΎΡ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ опрСдСляСт слуТСбныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‰ΠΈΠ΅ Π² динамичСском создании Π½ΠΎΠ²Ρ‹Π΅ Π²ΠΈΠ΄Ρ‹.

Он Ρ‚Π°ΠΊΠΆΠ΅ опрСдСляСт ΠΈΠΌΠ΅Π½Π° для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ стандартом Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Python, Π½ΠΎ Π½Π΅ прСдставлСнный ΠΊΠ°ΠΊ встроСнный, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ вмСсто ΠΈΠ»ΠΈ стр Π°Ρ€.

НаконСц, ΠΎΠ½ прСдоставляСт Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ слуТСбныС классы ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, связанныС с Ρ‚ΠΈΠΏΠ°ΠΌΠΈ. ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ нСдостаточно Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Ρ‚ΡŒ встроСнными.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ динамичСского Ρ‚ΠΈΠΏΠ°

types.new_class( name , bases=() , kwds=None , exec_body=None )

ДинамичСски создаСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ мСтакласс.

ΠŸΠ΅Ρ€Π²Ρ‹Π΅ Ρ‚Ρ€ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° β€” это ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ класс Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ опрСдСлСния: имя класса, Π±Π°Π·ΠΎΠ²Ρ‹Π΅ классы (ΠΏΠΎ порядку), Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, мСтакласс ).

АргумСнт exec_body являСтся ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΌ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для заполнСния Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ созданноС пространство ΠΈΠΌΠ΅Π½ классов. Он Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ пространство ΠΈΠΌΠ΅Π½ класса Π² качСствС СдинствСнного Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ пространство ΠΈΠΌΠ΅Π½ нСпосрСдствСнно с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ класса содСрТаниС. Если ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ² Π½Π΅ прСдоставляСтся, ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎΡ‚ ΠΆΠ΅ эффСкт, Ρ‡Ρ‚ΠΎ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π² лямбда-выраТСния: НСт .

НовоС Π² вСрсии 3.3.

types.prepare_class( name , bases=() , kwds=None )

ВычисляСт ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ мСтакласс ΠΈ создаСт пространство ΠΈΠΌΠ΅Π½ класса.

АргумСнты β€” это ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ опрСдСлСния класса: имя класса, Π±Π°Π·ΠΎΠ²Ρ‹Π΅ классы (ΠΏΠΎ порядку) ΠΈ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, мСтакласс ).

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ прСдставляСт собой 3-ΠΊΠΎΡ€Ρ‚Π΅ΠΆ: мСтакласс, пространство ΠΈΠΌΠ΅Π½, kwds

мСтакласс являСтся подходящим мСтаклассом, пространство ΠΈΠΌΠ΅Π½ являСтся ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ΅ пространство ΠΈΠΌΠ΅Π½ классов ΠΈ kwds это обновлСнная копия ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π΅ kwds с ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ любой записи «мСтакласс» . Если Π½Π΅Ρ‚ kwds пСрСдаСтся Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚, это Π±ΡƒΠ΄Π΅Ρ‚ пустой Π΄ΠΈΠΊΡ‚ΠΎΡ„ΠΎΠ½.

НовоС Π² вСрсии 3.3.

ИзмСнСно Π² вСрсии 3.6: Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для элСмСнта пространства ΠΈΠΌΠ΅Π½ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ измСнился. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‰Π΅Π΅ порядок вставки, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° мСтакласс Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° __prepare__ .

Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅

ΠœΠ΅Ρ‚Π°ΠΊΠ»Π°ΡΡΡ‹

Полная информация ΠΎ процСссС создания классов, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠΌ этими функциями

PEP 3115 β€” ΠœΠ΅Ρ‚Π°ΠΊΠ»Π°ΡΡΡ‹ Π² Python 3000

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Ρ…ΡƒΠΊ пространства ΠΈΠΌΠ΅Π½ __prepare__

Ρ‚ΠΈΠΏΡ‹.resolve_bases ( Π±Π°Π· )

ДинамичСскоС Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ записСй MRO, ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π² PEP 560 .

Π­Ρ‚Π° функция ΠΈΡ‰Π΅Ρ‚ элСмСнты Π² оснований , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ экзСмплярами Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ‚Π°ΠΊΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΌΠ΅Ρ‚ΠΎΠ΄ __mro_entries__ замСняСтся Π½Π° распакованный Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π²Ρ‹Π·ΠΎΠ² этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.

Если элСмСнт bases являСтся экзСмпляром Ρ‚ΠΈΠΏΠ° , ΠΈΠ»ΠΈ Ρƒ Π½Π΅Π³ΠΎ Π½Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° __mro_entries__ , Ρ‚ΠΎ ΠΎΠ½ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΉ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

НовоС Π² вСрсии 3.7.

Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅

PEP 560 β€” Основная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° модуля Π²Π²ΠΎΠ΄Π° ΠΈ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ²

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ²

Π­Ρ‚ΠΎΡ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ прСдоставляСт ΠΈΠΌΠ΅Π½Π° для ΠΌΠ½ΠΎΠ³ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ², Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Python. Он Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ ΠΈΠ·Π±Π΅Π³Π°Π΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠ· Ρ‚ΠΈΠΏΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ случайно Π²ΠΎ врСмя ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ листитСратор Ρ‚ΠΈΠΏΠ° .

Π’ΠΈΠΏΠΈΡ‡Π½ΠΎΠ΅ использованиС этих ΠΈΠΌΠ΅Π½ для isinstance() ΠΈΠ»ΠΈ issubclass() ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ.

Если Π²Ρ‹ создаСтС экзСмпляр любого ΠΈΠ· этих Ρ‚ΠΈΠΏΠΎΠ², ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ сигнатуры ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ Π² Ρ€Π°Π·Π½Ρ‹Ρ… вСрсиях Python.

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ для ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ²:

Ρ‚ΠΈΠΏΡ‹ .NoneType

Π’ΠΈΠΏ НСт .

НовоС Π² вСрсии 3.10.

Ρ‚ΠΈΠΏΡ‹. Π’ΠΈΠΏ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
Ρ‚ΠΈΠΏΡ‹.LambdaType

Π’ΠΈΠΏ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, созданных лямбда Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ.

Π’Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ событиС Π°ΡƒΠ΄ΠΈΡ‚Π° function.__new__ с Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ , ΠΊΠΎΠ΄ .

Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅ Π°ΡƒΠ΄ΠΈΡ‚Π° происходит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для прямого создания экзСмпляров Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΈ Π½Π΅ поднимаСтся для Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ компиляции.

Ρ‚ΠΈΠΏΡ‹.GeneratorType

Π’ΠΈΠΏ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²-ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², созданных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°.

Ρ‚ΠΈΠΏΡ‹. CoroutineType

Π’ΠΈΠΏ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² сопрограмм, созданных асинхронных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ def .

НовоС Π² вСрсии 3.5.

Ρ‚ΠΈΠΏΡ‹.AsyncGeneratorType

Π’ΠΈΠΏ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² асинхронного Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°-ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°, созданных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ асинхронного Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°.

НовоС Π² вСрсии 3.6.

класс Ρ‚ΠΈΠΏΠΎΠ².CodeType( **kwargs )

Π’ΠΈΠΏ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΊΠΎΠ΄Π°, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ compile() .

Π’Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ событиС Π°ΡƒΠ΄ΠΈΡ‚Π° code.__new__ с Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ code , filename , name , argcount , posonlyargcount , kwonlyargcount , nlocals , Ρ€Π°Π·ΠΌΠ΅Ρ€ стСка , Ρ„Π»Π°Π³ΠΈ .

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ с ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ΠΈΠ»ΠΈ позициями трСбуСтся ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠΌ. Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅ Π°ΡƒΠ΄ΠΈΡ‚Π° происходит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для прямого созданиС экзСмпляров ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΊΠΎΠ΄Π° ΠΈ Π½Π΅ вызываСтся для ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ компиляции.

Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ( **kwargs )

Π’Π΅Ρ€Π½ΡƒΡ‚ΡŒ копию ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΊΠΎΠ΄Π° с Π½ΠΎΠ²Ρ‹ΠΌΠΈ значСниями для ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»Π΅ΠΉ.

НовоС Π² вСрсии 3.8.

Ρ‚ΠΈΠΏΡ‹.CellType

Π’ΠΈΠΏ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ячССк: Ρ‚Π°ΠΊΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ для свободныС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

НовоС Π² вСрсии 3.8.

Ρ‚ΠΈΠΏΡ‹.MethodType

Π’ΠΈΠΏ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… экзСмпляров класса.

Ρ‚ΠΈΠΏΡ‹.BuiltinFunctionType
Ρ‚ΠΈΠΏΡ‹.BuiltinMethodType

Π’ΠΈΠΏ встроСнных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΊΠ°ΠΊ len() ΠΈΠ»ΠΈ sys.exit() ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ встроСнных классов. (Π—Π΄Π΅ΡΡŒ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ «встроСнный» ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ «написанный Π½Π° Π’.)

Ρ‚ΠΈΠΏΡ‹.WrapperDescriptorType

Π’ΠΈΠΏ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… встроСнных Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… классов, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.__init__() ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.__lt__() .

НовоС Π² вСрсии 3.7.

Ρ‚ΠΈΠΏΡ‹.MethodWrapperType

Π’ΠΈΠΏ связан с ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… встроСнных Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… классов. НапримСр, это Ρ‚ΠΈΠΏ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚().__str__ .

НовоС Π² вСрсии 3.7.

Ρ‚ΠΈΠΏΡ‹ .NotImplementedType

Π’ΠΈΠΏ НСрСализовано .

НовоС Π² вСрсии 3.10.

Ρ‚ΠΈΠΏΡ‹.MethodDescriptorType

Π’ΠΈΠΏ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… встроСнных Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ str. join() .

НовоС Π² вСрсии 3.7.

Ρ‚ΠΈΠΏΡ‹.ClassMethodDescriptorType

Π’ΠΈΠΏ нСсвязанных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² класса Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… встроСнных Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Π΄ΠΈΠΊΡ‚.__dict__['fromkeys'] .

НовоС Π² вСрсии 3.7.

класс Ρ‚ΠΈΠΏΠΎΠ².ModuleType( name , doc=None )

Π’ΠΈΠΏ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ Π±Π΅Ρ€Π΅Ρ‚ имя ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ, ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΅Π³ΠΎ docstring.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ importlib.util.module_from_spec() для создания Π½ΠΎΠ²ΠΎΠ³ΠΎ модуля, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΎΠΌ.

__doc__

Π‘Ρ‚Ρ€ΠΎΠΊΠ° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ модуля. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ НСт .

__Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ__

Π—Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ, Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠ²ΡˆΠΈΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ НСт .

Π­Ρ‚ΠΎΡ‚ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ importlib.machinery.ModuleSpec.loader ΠΊΠ°ΠΊ хранится Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ __spec__ .

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Π’ Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… вСрсиях Python этот Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ этого ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ измСнСния, ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈΠ· __spec__ вмСсто Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ getattr(module, "__loader__", None) , Ссли Π²Π°ΠΌ явно Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚.

ИзмСнСно Π² вСрсии 3.4: По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ НСт . Π Π°Π½Π΅Π΅ этот Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ Π±Ρ‹Π» Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ.

__имя__

НазваниС модуля. ΠžΠΆΠΈΠ΄Π°Π΅Ρ‚ΡΡ совпадСниС importlib.machinery.ModuleSpec.name .

__ΠΏΠ°ΠΊΠ΅Ρ‚__

К ΠΊΠ°ΠΊΠΎΠΌΡƒ ΠΏΠ°ΠΊΠ΅Ρ‚Ρƒ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ. Если ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня (Ρ‚.Π΅. Π½Π΅ являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π°), Ρ‚ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ установлСн Π΄ΠΎ '' , ΠΈΠ½Π°Ρ‡Π΅ слСдуСт ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ имя ΠΏΠ°ΠΊΠ΅Ρ‚Π° (ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ __name__ , Ссли ΠΌΠΎΠ΄ΡƒΠ»ΡŒ сам являСтся ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ). По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ НСт .

Π­Ρ‚ΠΎΡ‚ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ importlib. machinery.ModuleSpec.parent ΠΊΠ°ΠΊ хранится Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ __spec__ .

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Π’ Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… вСрсиях Python этот Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ этого ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ измСнСния, ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈΠ· __spec__ вмСсто Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ getattr(module, "__package__", None) , Ссли Π²Π°ΠΌ явно Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚.

ИзмСнСно Π² вСрсии 3.4: По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ НСт . Π Π°Π½Π΅Π΅ этот Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ Π±Ρ‹Π» Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ.

__spec__

Π—Π°ΠΏΠΈΡΡŒ состояния модуля, связанного с систСмой ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°. ΠžΠΆΠΈΠ΄Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ экзСмпляр importlib.machinery.ModuleSpec .

НовоС Π² вСрсии 3.4.

Ρ‚ΠΈΠΏΡ‹.EllipsisType

Π’ΠΈΠΏ ΠœΠ½ΠΎΠ³ΠΎΡ‚ΠΎΡ‡ΠΈΠ΅ .

НовоС Π² вСрсии 3.10.

класс Ρ‚ΠΈΠΏΠΎΠ².GenericAlias ​​( t_origin , t_args )

Π’ΠΈΠΏ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π΄ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΊΠΎΠ², Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ список[Ρ†Π΅Π»ΠΎΠ΅ число] .

t_origin Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌ классом, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ list , ΠΊΠΎΡ€Ρ‚Π΅ΠΆ ΠΈΠ»ΠΈ dict . t_args Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΌ (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π»ΠΈΠ½Π° 1) Ρ‚ΠΈΠΏΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ t_origin :

 >>> ΠΈΠ· ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Ρ‚ΠΈΠΏΠΎΠ² GenericAlias
>>> list[int] == ​​GenericAlias(list, (int,))
Π˜ΡΡ‚ΠΈΠ½Π½Ρ‹ΠΉ
>>> dict[str, int] == ​​GenericAlias(dict, (str, int))
Π˜ΡΡ‚ΠΈΠ½Π½Ρ‹ΠΉ
 

НовоС Π² вСрсии 3.9.

ИзмСнСно Π² вСрсии 3.9.2: Π’Π΅ΠΏΠ΅Ρ€ΡŒ этот Ρ‚ΠΈΠΏ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ подклассом.

Π’ΠΈΠΏΡ‹ класса . UnionType

Π’ΠΈΠΏ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Ρ‚ΠΈΠΏΠ° объСдинСния.

НовоС Π² вСрсии 3.10.

класс Ρ‚ΠΈΠΏΠΎΠ².TracebackType( tb_next , tb_frame , tb_lasti , tb_lineno )

Π’ΠΈΠΏ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² трассировки, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹ΠΉ Π² sys.exception().__traceback__ .

Π‘ΠΌ. справочник ΠΏΠΎ языку для получСния ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ доступныС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ руководство ΠΏΠΎ созданию трассировок динамичСски.

Ρ‚ΠΈΠΏΡ‹.FrameType

Π’ΠΈΠΏ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ„Ρ€Π΅ΠΉΠΌΠ°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹ΠΉ Π² tb.tb_frame , Ссли tb являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ трассировки.

Π‘ΠΌ. справочник ΠΏΠΎ языку для получСния ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ доступныС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

Ρ‚ΠΈΠΏΡ‹.GetSetDescriptorType

Π’ΠΈΠΏ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π² модулях Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PyGetSetDef , Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠ°ΠΊ FrameType.f_locals ΠΈΠ»ΠΈ array.array.typecode . Π­Ρ‚ΠΎΡ‚ Ρ‚ΠΈΠΏ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ дСскриптор Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°; ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Ρƒ ΠΆΠ΅ Ρ†Π΅Π»ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈ Ρ‚ΠΈΠΏ свойства , Π½ΠΎ для классов, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π² модулях Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ.

Ρ‚ΠΈΠΏΡ‹.MemberDescriptorType

Π’ΠΈΠΏ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π² модулях Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ с PyMemberDef , Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠ°ΠΊ datetime.timedelta.days . Π­Ρ‚ΠΎΡ‚ Ρ‚ΠΈΠΏ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² качСствС дСскриптора для простого C элСмСнты Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ стандартныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ прСобразования; Ρƒ Π½Π΅Π³ΠΎ Ρ‚Π° ΠΆΠ΅ Ρ†Π΅Π»ΡŒ ΠΊΠ°ΠΊ свойство Ρ‚ΠΈΠΏΠ° , Π½ΠΎ для классов, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π² модулях Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ.

БвСдСния ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ CPython: Π’ Π΄Ρ€ΡƒΠ³ΠΈΡ… рСализациях Python этот Ρ‚ΠΈΠΏ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π΅Π½ GetSetDescriptorType .

класс Ρ‚ΠΈΠΏΠΎΠ². MappingProxyType ( сопоставлСниС )

ΠŸΡ€ΠΎΠΊΡΠΈ сопоставлСния Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния. Он обСспСчиваСт динамичСскоС прСдставлСниС ΠΊΠ°Ρ€Ρ‚ записСй, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ отобраТСния прСдставлСниС ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ эти измСнСния.

НовоС Π² вСрсии 3.3.

ИзмСнСно Π² вСрсии 3.9: ОбновлСно для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ союза ( | ) ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΈΠ· PEP 584 , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ просто Π΄Π΅Π»Π΅Π³ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°Π·ΠΎΠ²ΠΎΠΌΡƒ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ.

ΠΊΠ»ΡŽΡ‡ Π² прокси

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Π˜ΡΡ‚ΠΈΠ½Π° , Ссли Π±Π°Π·ΠΎΠ²ΠΎΠ΅ сопоставлСниС ΠΈΠΌΠ΅Π΅Ρ‚ ΠΊΠ»ΡŽΡ‡ ΠΊΠ»ΡŽΡ‡ , ΠΈΠ½Π°Ρ‡Π΅ Π›ΠΎΠΆΡŒ .

прокси [ΠΊΠ»ΡŽΡ‡]

Π’Π΅Ρ€Π½ΡƒΡ‚ΡŒ элСмСнт Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ сопоставлСния с ΠΊΠ»ΡŽΡ‡ΠΎΠΌ ΠΊΠ»ΡŽΡ‡ . ΠŸΠΎΠ΄Π½ΠΈΠΌΠ°Π΅Ρ‚ KeyError , Ссли ΠΊΠ»ΡŽΡ‡ Π½Π΅ находится Π² Π±Π°Π·ΠΎΠ²ΠΎΠΌ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ.

ΠΈΡ‚Π΅Ρ€ (прокси)

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Π°ΠΌ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ сопоставлСния. Π­Ρ‚ΠΎ ярлык для iter(proxy.keys()) .

Π»Π΅Π½ (прокси)

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ количСство элСмСнтов Π² Π±Π°Π·ΠΎΠ²ΠΎΠΌ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ.

ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ()

Π’Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π½Π΅Π³Π»ΡƒΠ±ΠΎΠΊΡƒΡŽ копию Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ сопоставлСния.

ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ( ΠΊΠ»ΡŽΡ‡ [ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ])

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для ΠΊΠ»ΡŽΡ‡Π° , Ссли ΠΊΠ»ΡŽΡ‡ находится Π² Π±Π°Π·ΠΎΠ²ΠΎΠΌ сопоставлСнии, ΠΈΠ½Π°Ρ‡Π΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ . Если default Π½Π΅ Π·Π°Π΄Π°Π½ΠΎ, ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ None , Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ KeyError .

элСмСнты ()

Π’Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ прСдставлСниС элСмСнтов Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ сопоставлСния ( (ΠΊΠ»ΡŽΡ‡, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅) ΠΏΠ°Ρ€).

ΠΊΠ»ΡŽΡ‡ΠΈ()

Π’Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ прСдставлСниС ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ сопоставлСния.

значСния()

Π’Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ прСдставлСниС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ сопоставлСния.

ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ (прокси)

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Π°ΠΌ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ сопоставлСния.

НовоС Π² вСрсии 3.9.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ классы полСзности ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

класс Ρ‚ΠΈΠΏΠΎΠ².SimpleNamespace

ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ подкласс ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° , ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ доступ ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ пространство ΠΈΠΌΠ΅Π½, Π° Ρ‚Π°ΠΊΠΆΠ΅ осмыслСнноС прСдставлСниС.

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° , с SimpleNamespace ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹. Если ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ SimpleNamespace инициализируСтся ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, ΠΎΠ½ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ нСпосрСдствСнно Π² Π±Π°Π·ΠΎΠ²ΠΎΠ΅ пространство ΠΈΠΌΠ΅Π½.

Π’ΠΈΠΏ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ эквивалСнтСн ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΊΠΎΠ΄Ρƒ:

 класс SimpleNamespace:
    def __init__(я, /, **kwargs):
        self.__dict__.update(kwargs)
    Π·Π°Ρ‰ΠΈΡ‚Π° __repr__(сам):
        items = (f"{k}={v!r}" для k, v в self. __dict__.items())
        return "{}({})".format(type(self).__name__, ", ".join(items))
    def __eq__(я, Π΄Ρ€ΡƒΠ³ΠΎΠΉ):
        Ссли isinstance(self, SimpleNamespace) и isinstance(other, SimpleNamespace):
           Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ self.__dict__ == Π΄Ρ€ΡƒΠ³ΠΎΠ΅.__dict__
        Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π½Π΅Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ
 

SimpleNamespace ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π² качСствС Π·Π°ΠΌΠ΅Π½Ρ‹ класса NS: pass . Однако для структурированного Ρ‚ΠΈΠΏΠ° записи ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ namedtuple() вмСсто.

НовоС Π² вСрсии 3.3.

ИзмСнСно Π² вСрсии 3.9: ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² Π² прСдставлСнии ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ с Π°Π»Ρ„Π°Π²ΠΈΡ‚Π½ΠΎΠ³ΠΎ Π½Π° вставку (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄ΠΈΠΊΡ‚ ).

types.DynamicClassAttribute( fget=НСт , fset=НСт , fdel=НСт , doc=НСт )

ΠΠ°ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ доступ ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρƒ класса Π² __getattr__.

Π­Ρ‚ΠΎ дСскриптор, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для опрСдСлСния Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ, ΠΊΠΎΠ³Π΄Π° доступ Ρ‡Π΅Ρ€Π΅Π· экзСмпляр ΠΈ Ρ‡Π΅Ρ€Π΅Π· класс. Доступ ΠΊ экзСмпляру остаСтся Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ, Π½ΠΎ доступ ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρƒ Ρ‡Π΅Ρ€Π΅Π· класс Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ класса __getattr__; это дСлаСтся ΠΏΡƒΡ‚Π΅ΠΌ поднятия AttributeError.

ΠžΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *