"Python - модули, пакеты, классы, экземпляры" - читать интересную книгу автора (Бройтман Олег)


ЏЁв®­ - ®ЎкҐЄв­®-®аЁҐ­вЁа®ў ­­л© п§лЄ б® ¬­®¦Ґб⢥­­л¬ ­ б«Ґ¤®ў ­ЁҐ¬.
Њ®¦­® бЄ § вм, зв® ЏЁв®­ Ї®¤¤Ґа¦Ёў Ґв Є« ббЁзҐбЄго ЋЋ-¬®¤Ґ«м б ­ҐЄ®в®ал¬Ё
®б®ЎҐ­­®бвп¬Ё. Љ« ббл ў Python ¬®Јгв Ё¬Ґвм бв вЁзҐбЄЁҐ ЇҐаҐ¬Ґ­­лҐ,
а §¤Ґ«пҐ¬лҐ ўбҐ¬Ё нЄ§Ґ¬Ї«па ¬Ё Є« бб , ­® ­Ґ ¬®Јгв Ё¬Ґвм бв вЁзҐбЄЁе
¬Ґв®¤®ў. ‚ᥠ¬Ґв®¤л ®в­®бпвбп Є нЄ§Ґ¬Ї«па ¬ Є« бб . ‚ᥠ¬Ґв®¤л ¬®¦­®
ЇҐаҐ®ЇаҐ¤Ґ«пвм ў ­ б«Ґ¤­ЁЄ е. ‘бл«Є  ­  ®ЎкҐЄв (нЄ§Ґ¬Ї«па Є« бб ) ЇҐаҐ¤ Ґвбп
ў ¬Ґв®¤л ў пў­®¬ ўЁ¤Ґ, ў ЇҐаў®¬ Ї а ¬ҐваҐ. ’а ¤ЁжЁ®­­® нвг ЇҐаҐ¬Ґ­­го
­ §лў ов self. Љ Є®Ј®-в® ®ЎйҐЈ® ЇаҐ¤Є  ўбҐе Є« бб®ў (вЁЇ  Object) ў Python
­Ґв. ‚®®ЎйҐ ў ЋЋ-Їа®Ја ¬¬Ёа®ў ­ЁЁ ў ЏЁв®­Ґ ў ¦­® ­Ґ Єв® ®в Є®Ј® ­ б«Ґ¤гҐвбп,
  Є Є®© Ї®¤¤Ґа¦Ёў Ґвбп Ё­вҐа䥩б; ­ б«Ґ¤®ў ­ЁҐ «Ёим ¤ Ґв ॠ«Ё§ жЁо.
”®а¬ «м­ле ¬Ґе ­Ё§¬®ў Їа®ўҐаЄЁ Ё­вҐа䥩ᮢ Ї®Є  ­Ґв, ­® ў®§¬®¦­® ®­Ё Ўг¤гв
ўЄ«озҐ­л ў п§лЄ Ё ЎЁЎ«Ё®вҐЄЁ; Zope ¤Ґ« Ґв и ЈЁ ў н⮬ ­ Їа ў«Ґ­ЁЁ.
Љ®­бвагЄв®а Ё ¤ҐбвагЄв®а Є« бб  ­ §лў овбп __init__ Ё __del__
(ўбв஥­­лҐ Ё б«г¦ҐЎ­лҐ Ё¬Ґ­  ў ЏЁв®­Ґ ®Ў®§­ з овбп ¤ўг¬п Ї®¤зҐаЄЁў ­Ёп¬Ё
ЇҐаҐ¤ Ё Ї®б«Ґ Ё¬Ґ­Ё; нв® ўбҐЈ® «Ёим б®Ј« иҐ­ЁҐ, п§лЄ ­Ґ § ЇаҐй Ґв
Їа®Ја ¬¬Ёбвг ЇЁб вм б®Ўб⢥­­лҐ ¬Ґв®¤л б в ЄЁ¬Ё Ё¬Ґ­ ¬Ё). ‚Ґа­ҐҐ Ўл«® Ўл
­ §ў вм нвЁ ¬Ґв®¤л initializer Ё finalizer - ®­Ё б ¬Ё ­Ґ а §¬Ґй ов Ё ­Ґ
®бў®Ў®¦¤ ов Ї ¬пвм (нв® ¤Ґ« Ґв §  ­Ёе Ё­вҐаЇаҐв в®а), ®­Ё Ё­ЁжЁ «Ё§Ёагов Ё
®зЁй ов бў®Ё ЇҐаҐ¬Ґ­­лҐ.
‚ ЏЁв®­Ґ ­Ґв ®в¤Ґ«м­®Ј® ®ЇҐа в®а  new ¤«п ᮧ¤ ­Ёп нЄ§Ґ¬Ї«па®ў Є« бб .
„«п ᮧ¤ ­Ёп нЄ§Ґ¬Ї«па  Є« бб  ўл§лў Ґвбп Є« бб б ­Ґ®Ўе®¤Ё¬л¬Ё Ї а ¬Ґва ¬Ё.
ќвЁ Ї а ¬Ґвал ЇҐаҐ¤ овбп ў __init__. ЊҐв®¤ __del__, Є®­Ґз­®, ўл§лў Ґвбп ЎҐ§
Ї а ¬Ґва®ў (Єа®¬Ґ, ҐбвҐб⢥­­®, self). „«п г¤ «Ґ­Ёп ®ЎкҐЄв®ў (Ё ­Ґ в®«мЄ®
нЄ§Ґ¬Ї«па®ў Є« бб®ў) ў ЏЁв®­Ґ Ґбвм ®ЇҐа в®а del.
ЏаЁ¬Ґа.
class Foo:
bar = "baz"

def __init__(self, foo):
self.foo = foo

def __del__(self):
del self.foo

foo = Foo(12)
del foo
ЋЇЁб ­ЁҐ Є« бб  б®§¤ Ґв ­®ў®Ґ Їа®бва ­бвў® Ё¬Ґ­, ў Є®в®а®¬ ®ЇаҐ¤Ґ«повбп
бв вЁзҐбЄЁҐ ЇҐаҐ¬Ґ­­лҐ (ў ­ иҐ¬ ЇаЁ¬ҐаҐ нв® bar) Ё ¬Ґв®¤л. ‘®§¤ ­ЁҐ
нЄ§Ґ¬Ї«па  Ї®а®¦¤ Ґв Їа®бва ­бвў® Ё¬Ґ­ ®ЎкҐЄв , ¤®бвгЇ Є Є®в®а®¬г
®бгйҐбвў«пҐвбп зҐаҐ§ ЇҐаҐ¬Ґ­­го нЄ§Ґ¬Ї«па  Є« бб  foo,   ў­гваЁ ¬Ґв®¤®ў
Є« бб  - зҐаҐ§ ЇҐаҐ¬Ґ­­го self.
Љ« ббл ў ЏЁв®­Ґ Ї®§ў®«пов Їа®Ја ¬¬Ёбвг ᮧ¤ ў вм ­®ўлҐ вЁЇл ¤ ­­ле Ё
®ЇаҐ¤Ґ«пвм ¤«п ­Ёе ўбҐ ®ЇҐа жЁЁ, ¤®бвгЇ­лҐ ¤«п ўбв஥­­ле вЁЇ®ў. Ќ ЇаЁ¬Ґа,
¬Ґв®¤ __getitem__ Ї®§ў®«пҐв Ё­¤ҐЄбЁа®ў вм ®ЎкҐЄв,   __setitem__ -
ЇаЁбў Ёў вм Ё­¤ҐЄбг ®ЎкҐЄв . ЊҐв®¤ __getitem__ в Є¦Ґ Ї®§ў®«пҐв ®ЎкҐЄвг
гз бвў®ў вм ў жЁЄ«Ґ for, н¬г«Ёагп Ї®б«Ґ¤®ў вҐ«м­®бвм (sequence). …бвм
¬Ґв®¤л, Ї®§ў®«пойЁҐ ®ЎкҐЄвг н¬г«Ёа®ў вм Ўг«ҐўбЄЁҐ §­ зҐ­Ёп Ё гз бвў®ў вм ў
®ЇҐа в®а е if Ё while. ЊҐв®¤л __getattr__ Ё __setattr__ Ї®§ў®«пов зЁв вм Ё
ЇЁб вм  ваЁЎгвл ®ЎкҐЄв®ў. ЊҐв®¤ __call__ Ї®§ў®«пҐв ўл§лў вм нЄ§Ґ¬Ї«па Є« бб