Save 37% off PRO during our Black Friday Sale! »

pythonでメタプログラミング(メタクラス編)

 pythonでメタプログラミング(メタクラス編)

0c2ae3d2aa77423465e1e533ff0d030a?s=128

Daiki Ikeshima

March 25, 2021
Tweet

Transcript

  1. QZUIPOͰϝλϓϩάϥϛϯά dϝλΫϥεd UFDIUBML "*νʔϜ஑ౢେथ

  2. ϝλϓϩάϥϛϯάͱ͸ʁ w ίʔυΛੜ੒͢ΔΑ͏ͳϓϩάϥϛϯάͷ͜ͱ w ίʔυΛʮϝλతʯʹ࡞Δ

  3. ͳͥϝλϓϩάϥϛϯά͢Δͷ͔ʁ w Ϋϥεੜ੒࣌ͷৼΔ෣͍ͳͲಛघͳ੍ޚ͕Ͱ͖Δ w ؆୯ʹ͔͚ΔΑ͏ʹͳΔ ͨͩ͠ɺଟ༻͢ΔͱෳࡶʹͳΓ͗͢ΔͷͰɺ w දग़͢Δ෦෼Ͱ͸ଟ༻͠ͳ͍ w ϥΠϒϥϦͱ͔Ͱ͸ྑͦ͞͏

  4. QZUIPOͰϝλϓϩάϥϛϯάྫ ͍ΖΜͳύλʔϯ͕͋Δ w ϝλΫϥεΫϥεͷ࡞ΓํΛنఆ w σίϨʔλϝιουΛϥοϓ͢Δ w σΟεΫϦϓλ@@HFU@@ ͱ͔͕࣮૷͞Ε͍ͯΔΫϥ εɻ!DMBTTNFUIPE

    !TUBUJDNFUIPEͷ࣮૷Ͱ༗໊ w ͳͲͳͲ σίϨʔλ σΟεΫϦϓλΛ࢖࣮ͬͯ૷ͨ͠ TUBUJDNFUIPEͷٖࣅίʔυ
  5. ΫϥεͷΠϯελϯε࡞੒ w @@OFX@@ Š@@JOJU@@ ͱ͍͏ॱͰಛघϝιου͕ݺ͹ΕΔ w @@OFX@@ DMT Πϯελϯε͕Ͱ͖Δલʹ࣮ߦɻΫϥεΛΠϯελϯεԽ͢Δɻ w

    @@JOJU@@ TFMG Πϯελϯε͕Ͱ͖ͨޙʹ࣮ߦɻΠϯελϯεΛॳظԽ͢Δɻ w @@OFX@@ Λ࣮ߦޙΠϯελϯε͕ฦΔͱɺͦͷ@@JOJU@@ Λ࣮ߦ͢Δ࢓༷ Ϋϥε4BNQMF$MBTT͔ΒΠϯελϯεTFMGΛ࡞੒ ΠϯελϯεTFMGΛॳظԽ ΠϯελϯεTFMGΛฦ͢
  6. ϝλΫϥεͱ͸ʁ w ϝλΫϥεɿΫϥεΛ࡞ΔΫϥεͷ͜ͱ w ࢦఆ͢Δ͜ͱͰΫϥε࡞੒࣌ͷৼΔ෣͍Λ੍ޚͰ͖Δ w Ϋϥε͸Ͳ͏΍ͬͯ࡞੒͞Ε͍ͯΔͷ͔ʁʁʁ 4BNQMF$MBTT͕DMTʹͳΔ 4BNQMF.FUB$MBTTͰDMTΛ࡞੒

  7. ΫϥεΛ࡞ΔɿUZQF UZQF ͸ʮΦϒδΣΫτͷܕΛ஌Γ͍ͨͱ͖ʯʹ ࢖͏ϝιουͱͯ͠༗໊ ΋͏̍ͭͷ࢖͍ํΫϥεΛ࡞Δ w Ϋϥε໊ ܧঝ͢ΔΫϥε ଐੑΛύϥϝʔλ ʹࢦఆ

    w UZQFΛΠϯελϯεԽ͢ΔͱΫϥεʹͳΔ ಉ͡ ˢ ˠ
  8. ϝλΫϥεΛ࣮૷ͯ͠ΈΔ  w UZQFͷػೳΛ࢖ͬͯϝλΫϥεΛ࣮૷ w ϝλΫϥε͸ΫϥεΛ࡞ΔΫϥε w UZQF͸ΠϯελϯεԽ͢ΔͱΫϥεʹͳΔ w ϝλΫϥεͷ@@OFX@@

    ͰUZQFΛ࢖ͬͯΫϥεΛ࡞Δ UZQFΛΠϯελϯεԽͯ͠ΫϥεΛ࡞੒ ࡞੒ͨ͠ΫϥεΛฦ͢ 6TF$MBTTఆٛ࣌ʹ.FUB$MBTT͕Πϯελ ϯεԽ͞Ε@@OFX@@ Λ࣮ߦɻฦͬͯ͘Δ ΫϥεΛDMTʹ͢Δɻ ΠϯελϯεԽͤͣʹݺ΂Δ
  9. ϝλΫϥεΛ࣮૷ͯ͠ΈΔ  UZQFΛΠϯελϯεԽ ͯ͠ΫϥεΛ࡞੒ UZQFΛܧঝ w UZQFΛܧঝͯ͠.FUB$MBTTͰಉ༷ͷॲཧΛ࣮ݱ͢Δ w UZQF ʜ

    ŠTVQFS @@OFX@@ ʜ ͰΫϥεΛ࡞Δ
  10. ϝλΫϥεͷ࢖༻࣮ྫMVJHJ MVJHJ w TQPUJGZ։ൃͷύΠϓϥΠϯπʔϧ w ґଘؔ܎ͷ͋ΔॲཧΛղܾ͠ͳ͕Β࣮ߦͯ͘͠ΕΔ w "*νʔϜͰ͸ϥοϓͨ͠HPLBSUͱ͍͏πʔϧΛඪ४తʹ࢖༻ IUUQTTQFBLFSEFDLDPNOJTIJCBHPLBSUXP[VPUVUBIVB IUUQTTQFBLFSEFDLDPNWBBBBBORVJTIHPLBSUGBMTFZVOZPOHUPLFUJOJUVJUF

  11. MVJHJHPLBSUλεΫͷಛ௃ w ͲͷλεΫΛ࣮ߦ͢Δ͔͸จࣈྻͰࢦఆՄೳ w UBTL͸ύϥϝʔλͰίʔυҎ֎͔ΒจࣈྻͰͷ੍ޚ͕Մೳ w ઃఆϑΝΠϧ͔Β w ίϚϯυϥΠϯύϥϝʔλ͔ΒɹɹͳͲ 5BTL"

    5BTL# \λεΫ໊TUSλεΫΫϥεPCKFDU^
 ͷؔ܎Λอ͍࣋ͯ͠ΔͨΊ 5BTL"ʹґଘ JOUͷύϥϝʔλΛ࣋ͭ w MVJHJHPLBSUͰ͸λεΫͱ͍͏Ϋϥε୯ҐͰॲཧΛॻ͘
  12. λεΫͷ໊લͱ࣮ମΛͲ͏อ͍࣋ͯ͠Δ͔ʁ w λεΫΫϥεͷϝλΫϥεͰ͋Δ3FHJTUFSʹλεΫΫϥεΛอ͍࣋ͯ͠Δ w ֤5BTLએݴ࣌ʹ3FHJTUFS@SFHʹλεΫ͕௥Ճ͞Ε͍ͯ͘ w 3FHJTUFS@SFHΛࢀর͢Δ͜ͱͰޙͰλεΫͷҰཡ͕औΕΔ ϝλΫϥε BCD"#$.FUB UZQFΛܧঝ

    Λܧঝ 3FHJTUFS@SFHʹλεΫΫϥεΛ௥Ճ DMT λεΫΫϥε Λ࡞੒
  13. λεΫ໊ͱλεΫΫϥεΛͲ͏อ͍࣋ͯ͠Δ͔ʁ w ͲͷλεΫΛ࣮ߦ͢Δ͔͸จࣈྻͰࢦఆՄೳ w ύϥϝʔλͰίʔυҎ֎͔ΒจࣈྻͰͷ੍ޚ͕Մೳ 3FHJTUFS@SFHʹ͋ΔλεΫ͔Β֘౰͢ΔλεΫΛ୳࣮ͯ͠ߦ͢Δ 3FHJTUFS@SFHʹ͋ΔλεΫ͔Β֘౰͢ΔλεΫΛ୳ͯ͠ύϥϝʔλΛηοτ͢Δ