Пи­тон, де­вуш­ки, и объ­ект­но-ори­ен­ти­ро­ван­ное про­грам­ми­ро­ва­ние

Бу­ра­ти­но (о по­ли­мор­физ­ме):
— Те­бя как зо­вут?
— Маль­ви­на!
— Мы не в сау­не! В жиз­ни те­бя как зо­вут?!
— Ма­ри­на...

Ду­маю, все мы так или ина­че слы­ша­ли об объ­ект­но-ори­ен­ти­ро­ван­ном про­грам­ми­ро­ва­нии. Эта за­мет­ка для тех, кто за 15 ми­нут хо­чет по­нять, что это та­кое. На про­стом при­ме­ре я про­де­мон­стри­рую по­ня­тия класс, объ­ект, кон­ст­рук­тор, де­ст­рук­тор, ин­кап­су­ля­ция, и да­же ска­жу па­ру слов про та­кие слож­ные ве­щи, как на­сле­до­ва­ние и по­ли­мор­физм.

Для экс­пе­ри­мен­тов мы бу­дем ис­поль­зо­вать ин­тер­пре­ти­руе­мый язык про­грам­ми­ро­ва­ния Python, ко­то­рый мож­но ска­чать от­сю­да (я ис­поль­зо­вал вер­сию 2.5.4).

По­сле уста­нов­ки Пи­то­на со­здай­те пу­стой файл test.py, на­жми­те на не­го пра­вой кноп­кой мы­ши (бу­дем пред­по­ла­гать, что вы ис­поль­зу­е­те Windows), и вы­бе­ри­те пункт ме­ню «Edit with IDLE». От­кро­ют­ся два ок­на. Ок­но «Python Shell» мо­же­те за­крыть, а в остав­шее­ся ок­но вставь­те сле­дую­щий текст, и со­хра­ни­те файл:

# -*- coding: cp1251 -*-
class girl:
    methods = {'и':'у','й':'ю','ти':'щу','ей':'ью','ри':'рю',
               'ери':'еру','ети':'ечу','ись':'усь','йся':'юсь',
               'оди':'ожу','рай':'раю','вись':'вюсь','тись':'чусь'}
    def __init__(self, name = 'Наташа'):
        print 'Привет, меня зовут', name
        self.name = name
    def __del__(self):
        print 'Прощай'
    def __getattr__(self, m):
        for l in xrange( len(m) ):
            try:
                print m[:l] + girl.methods[ m[l:] ]
                return
            except KeyError: pass
        if m[0] != '_': print 'Я не умею это делать'

Ли­стинг 1. Реа­ли­за­ция клас­са girl на язы­ке про­грам­ми­ро­ва­ния Python

Эта про­грам­ма — опи­са­ние клас­са girl (де­вуш­ка). Класс — это не­ко­то­рая аб­стракт­ная сущ­ность, ко­то­рая опи­сы­ва­ет всё то об­щее, что бу­дут иметь объ­ек­ты это­го клас­са. На­при­мер, су­ще­ству­ют де­вуш­ки Ма­ша, На­та­ша, Све­та, и дру­гие, но при опре­де­лён­ных об­сто­я­тель­ствах вам со­вер­шен­но не важ­но знать имя де­вуш­ки и дру­гие её свой­ства: до­ста­точ­но то­го, что этот объ­ект — де­вуш­ка, и она мо­жет де­лать всё то, что мо­гут де­лать де­вуш­ки. Это и есть ос­нов­ная идея объ­ект­но-ори­ен­ти­ро­ван­но­го про­грам­ми­ро­ва­ния.

Кон­ст­рук­тор и ме­то­ды

Пре­жде чем мы по­дроб­но раз­бе­рём опи­са­ние клас­са, да­вай­те посмот­рим, как он ра­бо­та­ет. На­жми­те F5 и в по­явив­шем­ся ок­не ин­тер­пре­та­то­ра вве­ди­те сле­ду­ю­щую ко­ман­ду по­сле сим­во­лов >>>:

>>> g = girl()
Привет, меня зовут Наташа

Мы толь­ко что со­зда­ли объ­ект клас­са girl, ко­то­рый те­перь хра­нит­ся в пе­ре­мен­ной g (точ­нее, пе­ре­мен­ная g с ним свя­за­на). Этот объ­ект ещё на­зы­ва­ют эк­зем­пля­ром клас­са. Объ­ект име­ет свой­ства и ме­то­ды. Свой­ства — эта та ин­фор­ма­ция, ко­то­рая хра­нит­ся в объ­ек­те. Ме­то­ды — это те дей­ствия, ко­то­рые мо­жет вы­пол­нять объ­ект (при вы­пол­не­нии ме­то­дов обыч­но ис­поль­зу­ют­ся и мо­дифи­ци­ру­ют­ся свой­ства объ­ек­та). Обыч­но все объ­ек­ты од­но­го клас­са об­ла­да­ют од­ни­ми и те­ми же на­бо­ра­ми ме­то­дов и свойств, но раз­лич­ны­ми зна­че­ни­я­ми этих свойств.

Кон­ст­рук­тор — тот ме­тод, ко­то­рый ав­то­ма­ти­че­ски вы­пол­ня­ет­ся в мо­мент со­зда­ния объ­ек­та. В дан­ном слу­чае де­вуш­ка в мо­мент со­зда­ния по­при­вет­ство­ва­ла нас и на­зва­ла своё имя. В Python кон­ст­рук­тор име­ет имя __init__.

В объ­ект­но-ори­ен­ти­ро­ван­ных язы­ках про­грам­ми­ро­ва­ния на­зва­ния свойств и ме­то­дов обыч­но за­пи­сы­ва­ют­ся че­рез точ­ку по­сле то­го объ­ек­та, к ко­то­ро­му они от­но­сят­ся. Посмот­рим, ка­кие ме­то­ды име­ет на­ша де­вуш­ка:

>>> g.подходи
подхожу
>>> g.раздевайся
раздеваюсь
>>> g.соси
сосу
>>> g.ложись
ложусь
>>> g.раздвигай
раздвигаю
>>> g.переворачивайся
переворачиваюсь
>>> g.одевайся
одеваюсь

Не­пло­хой на­бор ме­то­дов для клас­са girl! Ка­жет­ся, что на­ша де­вуш­ка мо­жет де­лать всё, что угод­но, но на са­мом де­ле это не так:

>>> g.упячка
Я не умею это делать

Де­ст­рук­тор и сбор­щик му­со­ра

По­сле то­го, как де­вуш­ка нам боль­ше не нуж­на, мы мо­жем уда­лить её:

>>> del g
Прощай

То, что мы ви­дим, на­зы­ва­ет­ся де­ст­рук­то­ром — это тот ме­тод, ко­то­рый ав­то­ма­ти­че­ски вы­пол­ня­ет­ся при уда­ле­нии объ­ек­та. В Python де­ст­рук­тор име­ет имя __del__.

Здесь есть не­боль­шая тон­кость: объ­ект на са­мом де­ле уда­ля­ет­ся не по ко­ман­де del, а чуть поз­же: во вре­мя сбор­ки му­со­ра. Ко­ман­дой del мы каг­бэ го­во­рим, что объ­ект g нам боль­ше не ну­жен. А сбор­щик му­со­ра уда­лит объ­ект то­гда, ко­гда он боль­ше не бу­дет ну­жен ни­где.

Про­ве­рим это. До­пу­стим, у вас с дру­гом од­на де­вуш­ка на дво­их, од­на­ко вы об­ща­е­тесь с ней че­рез раз­ные пе­ре­мен­ные (p и j):

>>> p = girl()
Привет, меня зовут Наташа
>>> j = p
>>> j.тяни
тяну
>>> p.толкай
толкаю
>>> del j
>>> del p
Прощай

Об­ра­ти­те вни­ма­ние, что сбор­щик му­со­ра уда­лил де­вуш­ку толь­ко то­гда, ко­гда она не ста­ла боль­ше нуж­на ни как p, ни как j.

Утеч­ка па­мя­ти

Ино­гда бы­ва­ет так, что сбор­щик му­со­ра не мо­жет уда­лить не­нуж­ных де­ву­шек. Рас­смот­рим си­ту­а­цию, ко­гда у вас есть две де­вуш­ки, и они вдруг по­лю­би­ли друг дру­га:

>>> g1 = girl('Маша')
Привет, меня зовут Маша
>>> g2 = girl('Марина')
Привет, меня зовут Марина
>>> g1.танцуй
танцую
>>> g2.раздевайся
раздеваюсь
>>> g1.love = g2
>>> g2.love = g1
>>> del g1
>>> del g2
>>>

Де­вуш­ки не уда­ли­лись, хо­тя ни од­на из них вам боль­ше не нуж­на (вы вы­пол­ни­ли для обе­их ко­ман­ду del). Про­бле­ма здесь в том, что де­вуш­ки нуж­ны друг дру­гу, по­это­му сбор­щик му­со­ра не уда­лил ни од­ну из них (это на­зы­ва­ет­ся коль­це­вой за­ви­си­мо­стью). По­сле вы­пол­не­ния ко­манд del у вас боль­ше нет пе­ре­мен­ных g1 и g2, по­это­му вы бо­лее не име­е­те ни­ка­кой воз­мож­но­сти свя­зать­ся с де­вуш­ка­ми. Од­на­ко, они всё ещё за­ни­ма­ют опе­ра­тив­ную па­мять. Ес­ли де­вуш­ки вам нуж­ны ча­сто, то из-за по­доб­ных си­ту­а­ций па́ры (или да­же трой­ки) де­ву­шек ра­но или позд­но зай­мут всё сво­бод­ное про­стран­ство, и про­грам­ма ава­рий­но за­вер­шит­ся. По этой же при­чи­не со­вре­мен­ные слож­ные про­грам­мы (на­при­мер, опе­ра­ци­он­ные си­сте­мы) при­хо­дит­ся ино­гда пе­ре­за­гру­жать, что­бы вос­ста­но­вить их ра­бо­то­спо­соб­ность.

Ин­кап­су­ля­ция и свой­ства

Те­перь по­го­во­рим об ин­кап­су­ля­ции. Этот тер­мин озна­ча­ет, что вы об­ща­е­тесь с де­вуш­кой как с це­лост­ной сущ­но­стью, и вам не важ­но, как она устрое­на внут­ри. Её дан­ные скры­ты от вас. Со­зда­дим двух де­ву­шек:

>>> g1 = girl('Маша')
Привет, меня зовут Маша
>>> g2 = girl('Наташа')
Привет, меня зовут Наташа
>>> g1.пей
пью
>>> g2.пей
пью

Вро­де бы обе де­вуш­ки со­вер­шен­но оди­на­ко­вы: мож­но вы­зы­вать для обе­их од­ни и те же ме­то­ды. И всё же это раз­лич­ные де­вуш­ки. У них есть свой­ства (в на­шем слу­чае — име­на). К со­жа­ле­нию, мы не мо­жем узнать эти име­на без на­ру­ше­ния ин­кап­су­ля­ции, ибо де­вуш­ки не со­дер­жат ме­то­дов для то­го, что­бы со­об­щить своё имя. По­это­му об­ра­тим­ся к име­нам на­пря­мую, без ве­до­ма де­ву­шек:

>>> print g1.name
Маша
>>> print g2.name
Наташа
>>>

Ко­гда вы хра­ни­те де­ву­шек или пе­ре­да­ё­те их для об­ра­бот­ки в ка­кую-ни­будь функ­цию, вам не на­до бес­по­ко­ить­ся, и хра­нить вме­сте с де­вуш­ка­ми их име­на или пе­ре­да­вать име­на вме­сте с ни­ми: име­на хра­нят­ся внут­ри де­ву­шек, в це­ло­сти и со­хран­но­сти.

На­сле­до­ва­ние

На­сле­до­ва­ние при­ме­ня­ет­ся для то­го, что­бы со­здать бо­лее кон­крет­ный класс из бо­лее об­ще­го. Рас­смот­рим при­мер. До­пу­стим, нам нуж­на ку­хар­ка. Ку­хар­ка — это то­же де­вуш­ка, толь­ко по­ми­мо все­го осталь­но­го она уме­ет го­то­вить. Так и на­пи­шем (до­бавь­те эти стро­ки в ваш файл test.py и со­хра­ни­те):

class cook(girl):
    methods = girl.methods
    methods['готовь'] = 'Кушайте, пожалуйста!'

Те­перь на­жми­те F5 и ис­пы­тай­те ку­хар­ку:

>>> c = cook()
Привет, меня зовут Наташа
>>> c.готовь
Кушайте, пожалуйста!

Об­ра­ти­те вни­ма­ние, что, как и лю­бая де­вуш­ка, ку­хар­ка по­при­вет­ство­ва­ла нас при со­зда­нии. На­сле­до­ва­ние хо­ро­шо тем, что вы все­гда мо­же­те ис­поль­зо­вать ку­хар­ку, как де­вуш­ку:

>>> c.готовь
Кушайте, пожалуйста!
>>> c.раздевайся
раздеваюсь

По­ли­мор­физм

Смысл это­го страш­но­го сло­ва по­яс­ню на при­ме­ре. До­пу­стим, у вас есть не­ко­то­рый класс gril, и вы не зна­е­те, от­ку­да он взял­ся. Вы со­зда­ё­те объ­ект это­го клас­са и ви­ди­те, что он всем по­хож на при­выч­ный нам класс girl, по­это­му вы его ис­поль­зу­е­те со­от­вет­ствен­но:

>>> g = gril()
Привет, меня зовут Эльвира
>>> g.подходи
подхожу
>>> g.соси
сосу

Но, ес­ли вы на­ру­ша­е­те ин­кап­су­ля­цию, про­ис­хо­дит нечто стран­ное:

>>> print g.name
Вася

Впро­чем, ка­кая раз­ни­ца, ес­ли объ­ект де­ла­ет всё то, что вам от не­го нуж­но...

185 отзывов на запись «Пи­тон, де­вуш­ки, и объ­ект­но-ори­ен­ти­ро­ван­ное про­грам­ми­ро­ва­ние»

По­сле g.со­си слож­но со­сре­до­то­чит­ся на ин­кап­су­ля­ции и осо­бен­но­стях сбор­ки му­со­ра
Впро­чем, ка­кая раз­ни­ца, ес­ли объ­ект де­ла­ет всё то, что вам от не­го нуж­но
Слу­чаи, ко­гда Ва­си де­ла­ют всё то, что вам нуж­но, в ди­на­ми­че­ском про­грам­ми­ро­ва­нии на­зы­ва­ют­ся ути­ным ти­пи­ро­ва­ни­ем:
If it looks like a duck and quacks like a duck, it must be a duck
Очень по­нра­ви­лось, ил­лю­стра­тив­но до пре­де­ла. Жаль, что из-за бли­зо­сти к это­му са­мо­му пре­де­лу, эти ил­лю­стра­ции нель­зя бу­дет ис­поль­зо­вать в учеб­ном про­цес­се
Есть не­точ­ность: ин­кап­су­ля­ция — это объ­еди­не­ние дан­ных и ко­да, ра­бо­таю­ще­го с эти­ми дан­ны­ми, в еди­ную сущ­ность.
Ну, во-пер­вых, у ме­ня при­мер­но так и на­пи­са­но:
Этот тер­мин озна­ча­ет, что вы об­ща­е­тесь с де­вуш­кой как с це­лост­ной сущ­но­стью, и вам не важ­но, как она устрое­на внут­ри.
Под «об­ще­ни­ем» я по­ни­мал вы­зов ме­то­дов и ра­бо­ту со свой­ства­ми. А во-вто­рых, со­глас­но Ви­ки­пе­дии,
Инкапсуля́ция — свой­ство язы­ка про­грам­ми­ро­ва­ния, поз­во­ляю­щее объ­еди­нить дан­ные и код в объ­ект и скрыть реа­ли­за­цию объ­ек­та от поль­зо­ва­те­ля.
По­это­му у ме­ня есть при­пис­ка:
Её дан­ные скры­ты от вас.
Хо­тя сле­ду­ет при­знать, что в Пи­то­не не­воз­мож­но пол­но­стью скрыть свой­ства объ­ек­та.
Вот уж по­нят­но так по­нят­но объ­яс­нил!! )
Я прям си­дел и ржал как конь, осо­зна­вая, что я всё по­ни­маю )
И пред­став­лял, что ав­тор, на­вер­ня­ка, сам ржал, ко­гда пи­сал.. Осо­бен­но, вот эти строч­ки:
Ко­гда вы хра­ни­те де­ву­шек или пе­ре­да­ё­те их для об­ра­бот­ки в ка­кую-ни­будь функ­цию
Жаль, толь­ко про по­ли­мор­физм нифи­га­шеч­ки не по­нят­но Кста­ти, а чем на­ве­ян пост? Кто-то по­про­сил?
Из­ви­ни­те за на­зой­ли­вость, а бу­дет ли ещё ка­кой-ли­бо не­про­стой ма­те­ри­ал, осо­бен­но в Ва­шем ис­пол­не­нии, по­доб­но это­му? )
Ес­ли вдруг пой­дё­те на урл мо­е­го сай­та и там уви­ди­те лин­ко­по­мой­ку на­вер­ху, и пор­но в ссыл­ках — не пу­гай­тесь — это лишь жал­кие по­пыт­ки мо­не­ти­зи­ро­вать блог на пи­во
Пост на­ве­ян слу­чай­но­стью. Я де­лал тек­сто­вый об­ра­бот­чик на ос­но­ве пат­тер­нов для ге­не­ра­ции тек­сто­вых пред­став­ле­ний чи­сел и скло­не­ния за­ви­си­мо­го сло­ва (на­при­мер 1234+сту­дент = «Ты­ся­ча две­сти трид­цать че­ты­ре сту­ден­та»), и вдруг по­лу­чи­лась впол­не не­пло­хая сме­на окон­ча­ния (иди-иду, бе­ги-бе­гу, и т.п.). Вот мысль и ста­ла раз­ви­вать­ся. Так как это слу­чай­ность, то ни­че­го но­во­го по­доб­но­го ти­па не пред­ви­дит­ся
Класс­ная шту­ка! С окон­ча­ни­я­ми по­нра­ви­лось. Вот ес­ли бы еще бы­ли на С и на Дел­фи дуб­ли­ка­ты, бы­ло бы про­сто за­ме­ча­тель­но! (С пи­то­ном ни­ко­гда не ра­бо­тал )
аффф­тар жжет
Спа­си­бо за псто! УГ по­вер­же­но ри­аль­не!
Вот так и рас­ска­зы­вай же­не что за­дер­жал­ся на ра­бо­те до 10, по­то­му что про­грам­ми­ро­вал….
Так по­сле та­ких по­стов ведь и не по­ве­рит!
Мо­жет хоть кто-ни­будь в ру­не­те на­пи­сать не смеш­ной, не пош­лый, не про де­ву­шек пост ко­то­рый бы до­ход­чи­во ил­лю­стри­ро­вал тя­го­ты и слож­но­сти ра­бо­ты с ком­пью­те­ром?
су­пер)))))
над ко­ман­да­ми дол­го сме­ял­ся))
ав­тор мо­ло­дец))
Ав­то­ру ми­нус за по­ли­мор­физм и на­сле­до­ва­ние!
Ста­тья пол­но­стью по Фрей­ду) — но за­чем так пре­не­бре­жи­тель­но от­но­сит­ся к жен­ско­му по­лу.
На­вер­ное имен­но по это­му у мно­гих де­ву­ше­ек сте­рео­тип­ное не­га­тив­ное мне­ние о про­грам­ми­стах!
Мо­гу сде­лать вы­вод, что у ав­то­ра не­ла­ды с лич­ной жиз­нью, да и пред­ме­том соб­ствен­но то­же не шиб­ко вла­де­ет!

Ну по­че­му же?

Ав­тор уже 4 го­да, как же­нат, и впол­не счаст­лив:

Моя же­на
ду­маю, ес­ли на­пи­сать то же, но про му­жи­ков — под­хо­жи- на­гнись — жо­пу раз­дви­гай, то уже счаст­ли­вы бу­де­те не так силь­но. Ну вот не мо­гут лю­ди по­нять, как это жен­щи­нам не­при­ят­но чи­тать, эм­па­тия на ну­ле. За­то на пи­то­не про­грам­ми­ру­ет, да…
Ан­тон, мо­ло­дец!
Ста­тья — блеск! Ува­жаю мно­го­уров­не­вость в со­чи­не­ни­ях, ко­гда и для ума, и для ду­ши, и для чи­ста­поржать то­же оста­ет­ся))))) Успе­хов!
Не пло­хо
За­бав­но, очень ил­лю­стра­тив­но.
Од­на­ко вер­но ска­за­но ввер­ху — при­мер про по­ли­мор­физм в це­лом не­пра­виль­ный, это де­мон­стра­ция ducktyping. При­мер по­ли­мор­физ­ма это пе­ре­опре­де­ле­ние ме­то­да «го­товь» в клас­се cook, или что то око­ло то­го.

Скрипт для Python 3, мо­жет ко­му по­на­до­бит­ся :)

# -*- coding: cp1251 -*-
class girl:
     methods = {'и':'у','й':'ю','ти':'щу','ей':'ью','ри':'рю',
                'ери':'еру','ети':'ечу','ись':'усь','йся':'юсь',
                'оди':'ожу','рай':'раю','вись':'вюсь','тись':'чусь'}
     def start(name = "Маша"):
         print ("Привет, меня зовут", name)
     def __del__(self):
         print ("Прощай")
     def __getattr__(self, m):
         for l in range( len(m) ):
             try:
                 print (m[:l] + girl.methods[ m[l:] ])
                 return
             except KeyError: pass
         if m[0] !='_': print ("Я не умею это делать")
     start()
g=girl()
Спа­си­бо.
Я бы не­мно­го пе­ре­пи­сал… class Girl:
methods = {‘и’: ‘у’, ‘й’: ‘ю’, ‘ти’: ‘щу’, ‘ей’: ‘ью’, ‘ри’: ‘рю’,
‘ери’: ‘еру’, ‘ети’: ‘ечу’, ‘ись’: ‘усь’, ‘йся’: ‘юсь’,
‘оди’: ‘ожу’, ‘рай’: ‘раю’, ‘вись’: ‘вюсь’, ‘тись’: ‘чусь’} def __init__(self, name=»Ма­ша»):
print(«При­вет, ме­ня зо­вут», name) def __del__(self):
print(«Про­щай») def __getattr__(self, m):
for l in range(len(m)):
try:
print(m[:l] + Girl.methods[m[l:]])
return
except KeyError:
pass
if m[0] != ‘_’:
print(«Я не умею это де­лать»)

class Girl:
methods = {\'и\': \'у\', \'й\': \'ю\', \'ти\': \'щу\', \'ей\': \'ью\', \'ри\': \'рю\',
\'ери\': \'еру\', \'ети\': \'ечу\', \'ись\': \'усь\', \'йся\': \'юсь\',
\'оди\': \'ожу\', \'рай\': \'раю\', \'вись\': \'вюсь\', \'тись\': \'чусь\'} def __init__(self, name=\"Ма­ша\"):
print(\"При­вет, ме­ня зо­вут\", name) def __del__(self):
print(\"Про­щай\") def __getattr__(self, m):
for l in range(len(m)):
try:
print(m[:l] + Girl.methods[m[l:]])
return
except KeyError:
pass
if m[0] != \'_\':
print(\"Я не умею это де­лать\")
class Girl:
    methods = {‘и’: ‘у’, ‘й’: ‘ю’, ‘ти’: ‘щу’, ‘ей’: ‘ью’, ‘ри’: ‘рю’,
               ‘ери’: ‘еру’, ‘ети’: ‘ечу’, ‘ись’: ‘усь’, ‘йся’: ‘юсь’,
               ‘оди’: ‘ожу’, ‘рай’: ‘раю’, ‘вись’: ‘вюсь’, ‘тись’: ‘чусь’}     def __init__(self, name="Маша"):
        print("Привет, меня зовут", name)     def __del__(self):
        print("Прощай")     def __getattr__(self, m):
        for l in range(len(m)):
            try:
                print(m[:l] + Girl.methods[m[l:]])
                return
            except KeyError:
                pass
        if m[0] != ‘_’:
            print("Я не умею это делать")
 
Ста­тья ши­кар­ная! Сра­зу всё по­нял. По­че­му в шко­ле так не объ­яс­ня­ют?
>>> p = girl ()
При­вет, ме­ня зо­вут На­та­ша
>>> p. под­хо­ди
SyntaxError: invalid syntax Это при ко­ди­ров­ке cp1251
При ко­ди­ров­ке utf-8 то же са­мое.
В чем пе­рец?
Функ­цио­ни­ро­ва­ние это­го при­ме­ра ос­но­ва­но на глю­ке в ста­рых вер­си­ях Idle (ре­дак­тор для Пи­то­на), поз­во­ляв­шем ис­поль­зо­вать рус­ские бук­вы в име­нах ме­то­дов (при­чём толь­ко в ко­ди­ров­ке cp1251). Я сей­час по­ты­кал­ся в раз­ные вер­сии Пи­то­на; по­след­няя вер­сия, в ко­то­рой ра­бо­та­ет при­мер, — 2.6.6. Вот ссыл­ка: http://www.python.org/download/releases/2.6.6/ (я про­ве­рял на 32-х бит­ной сбор­ке).
До­бро­го вре­ме­ни су­ток) Спа­си­бо за ста­тью. Очень по­нят­но на­пи­са­но. Я как раз пи­шу адап­тер. Так как пи­тон ви­жу во­об­ще пер­вый раз, то до­ста­точ­но слож­но, а зна­ний ооп во­об­ще не хва­та­ет.

Юни­код вер­сия

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys

class girl:
    dic = {'и':'у','й':'ю','ти':'щу','ей':'ью','ри':'рю',
           'ери':'еру','ети':'ечу','ись':'усь','йся':'юсь',
           'оди':'ожу','рай':'раю','вись':'вюсь','тись':'чусь'}
    udic = dict([(k.decode('utf-8'), v.decode('utf-8')) for k, v in dic.items()])
   
    def __init__(self, name = 'Наташа'):
        print u'Привет, меня зовут', name.decode('utf-8')
        self.name = name.decode('utf-8')
    def __del__(self):
        print u'Прощай'
    def do(self, m):
        m = m.decode('utf-8')
        for key in self.udic.keys():
            if m[-len(key):] == key:
                print ''.join([m[:-len(key)],self.udic[key]]).encode(sys.stdout.encoding)
                return
        print u'Я не умею это делать'

g = girl('Алинка')
g.do('раздевайся')
g.do('соси')
g.do('раздвигай')
g.do('агрегат')
print g.name, u'уходит..'
del g

А вот ра­бо­таю­щая вер­сия для Python3.

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys

class Girl(object):
    dic = {'и':'у','й':'ю','ти':'щу','ей':'ью','ри':'рю',
           'ери':'еру','ети':'ечу','ись':'усь','йся':'юсь',
           'оди':'ожу','рай':'раю','вись':'вюсь','тись':'чусь'}
    udic = dict([(k, v) for k, v in dic.items()])
   
    def __init__(self, name = 'Наташа'):
        print(" ".join(['Привет, меня зовут', name]))
        self.name = name
    def __del__(self):
        print('Прощай')
    def __getattr__(self, m):
        for key in self.udic.keys():
            if m[-len(key):] == key:
                print(''.join([m[:-len(key)],self.udic[key]]))
                return
        print('Я не умею это делать')

g = Girl('Алинка')
g.паркуйся
g.программируй
g.улыбайся
g.упражняйся
del g
Вы уве­ре­ны, что ваш код со­от­вет­ству­ет ори­ги­на­лу? Де­ло в том, что нуж­но за­ме­нять окон­ча­ние на са­мое длин­ное из тех, что есть в таб­ли­це, а не на пер­вое по­пав­шее­ся. Рас­смот­рим на­бор из трёх пра­вил, имею­щих­ся в таб­ли­це:
1) и → у
2) ри → рю
3) ери → еру Для че­го нуж­но тре­тье пра­ви­ло, ес­ли есть пер­вое? Для то­го, что­бы в не­ко­то­рых слу­ча­ях пе­ре­кры­вать вто­рое, ко­то­рое ино­гда пе­ре­кры­ва­ет пер­вое. Пра­ви­ла бы­ли по­лу­че­ны ма­шин­ным обу­че­ни­ем на ос­но­ве спис­ка из двух­сот гла­го­лов по­ве­ли­тель­но­го на­кло­не­ния. В тек­сте про­грам­мы пра­ви­ла упо­ря­до­че­ны по убы­ва­нию ча­сто­ты ис­поль­зо­ва­ния. При этом бо­лее длин­ное пра­ви­ло яв­ля­ет­ся ис­клю­че­ни­ем (пе­ре­кры­ва­ет) бо­лее ко­рот­кое.
Во­об­ще класс­ная ста­тья! Сра­зу ста­но­вит­ся все по­нят­но как на­чать про­грам­ми­ро­вать на Python-е, спа­си­бо!
на­ко­нец-то всё по­нял !!!
вы­бе­ри­те пункт ме­ню «Edit with IDLE» — а ес­ли нет та­ко­го пунк­та в нис­па­даю­щем ме­ню мыш­ки?
Hi this is kind of of off topic but I was wondering if blogs use WYSIWYG editors or if you
have to manually code with HTML. I’m starting a
blog soon but have no coding know-how so I wanted to get advice from someone
with experience. Any help would be enormously appreciated!
It is the best time to make some plans for the future
and it is time to be happy. I’ve learn this post
and if I could I wish to recommend you some attention-grabbing
issues or tips. Perhaps you can write next articles relating to
this article. I desire to read even more issues approximately it!
Howdy, i read your blog occasionally and i own a similar one and i was just curious if you get a lot of
spam feedback? If so how do you stop it, any plugin or anything you can suggest? I get so much lately it’s driving me insane so any support is very much appreciated.
I’m pretty pleased to uncover this web site. I want to to thank you for ones time for this particularly fantastic read!!
I definitely liked every little bit of it and I have you book-marked to see new stuff in your blog.
If some one wishes to be updated with most up-to-date technologies afterward
he must be pay a visit this web page and be up to date daily.
Just wish to say your article is as astounding. The clarity in your post is just great and i can assume you’re an expert on this subject.
Well with your permission let me to grab your
RSS feed to keep updated with forthcoming post. Thanks a million and please continue the
gratifying work.
I do not even know the way I finished up here,
but I assumed this publish was once good. I do not recognize who you might be however definitely you’re going to a
famous blogger should you are not already. Cheers!
First off I want to say superb blog! I had a quick question that I’d like to ask if you do not mind. I was interested to know how you center yourself
and clear your head before writing. I have had trouble clearing my thoughts
in getting my ideas out. I do enjoy writing however it just seems like the first
10 to 15 minutes are generally wasted simply just trying to figure out how to begin.
Any suggestions or hints? Thanks!
Greetings I am so happy I found your webpage, I really found you by error, while I was browsing on Aol for
something else, Regardless I am here now and
would just like to say kudos for a remarkable post and
a all round enjoyable blog (I also love the theme/design), I don’t have time to read it all at the minute but I have bookmarked it and also added your RSS feeds, so when I have time I will
be back to read a great deal more, Please do keep up
the superb work.
When I originally commented I clicked the «Notify me when new comments are added»
checkbox and now each time a comment is added I get several emails with the same comment.
Is there any way you can remove people from that service?
Many thanks!
I have read so many articles or reviews about the blogger lovers however this article is genuinely
a fastidious post, keep it up.
you’re really a excellent webmaster. The web site loading pace is amazing.
It sort of feels that you’re doing any distinctive trick.
Also, The contents are masterwork. you’ve performed a fantastic process on this subject!
Hey There. I found your blog using msn. This is a very
well written article. I’ll make sure to bookmark
it and return to read more of your useful info.
Thanks for the post. I will certainly return.
Hi there, all the time i used to check website posts here in the early hours in the daylight, for the reason that
i enjoy to find out more and more.
Your style is unique compared to other people I’ve read stuff from.
I appreciate you for posting when you’ve got the opportunity, Guess I will just bookmark this site.
Greetings! This is my 1st comment here so I just wanted to give a
quick shout out and tell you I truly enjoy reading your posts.
Can you recommend any other blogs/websites/forums that cover the
same topics? Many thanks!
Fantastic beat ! I wish to apprentice even as you amend your site, how
could i subscribe for a weblog web site? The account helped
me a acceptable deal. I have been a little bit acquainted of this your broadcast provided bright transparent concept
Hi, i read your blog from time to time and i own a similar one and i was just
curious if you get a lot of spam remarks? If so
how do you protect against it, any plugin or anything you can advise? I get so much lately it’s driving me crazy so any assistance is very much appreciated.
You’re so interesting! I do not think I’ve truly read through a
single thing like this before. So good to discover another
person with a few genuine thoughts on this issue.
Really.. many thanks for starting this up. This site is one thing that is
required on the internet, someone with some originality!
I just like the valuable information you supply for your articles. I’ll bookmark your blog and test again right here regularly. I am rather sure I’ll be told many new stuff right right here! Good luck for the next!
Wow, wonderful weblog format! How lengthy have you been blogging for?
you make running a blog look easy. The whole glance of
your web site is great, let alone the content!
Outstanding story there. What happened after? Good luck!
Hello There. I discovered your weblog the use of msn. That is a really well written article.
I will be sure to bookmark it and come back to read extra of your useful info. Thanks for the post. I’ll definitely comeback.
naturally like your web site however you have to take a look at the spelling
on quite a few of your posts. Many of them are rife with spelling problems and I to find it
very bothersome to tell the truth however I will certainly come back again.
Amazing! Its truly remarkable paragraph, I have got much clear idea concerning from
this post. Stop by my weblog :: real mink lashes for sale
I blog quite often and I genuinely thank you
for your content. This article has truly peaked my interest.
I’m going to book mark your site and keep checking for new information about once per week.
I subscribed to your Feed as well.
Undeniably imagine that that you said. Your favourite justification appeared to be on the net the easiest
thing to understand of. I say to you, I definitely get irked even as folks think about worries that they
plainly do not recognize about. You controlled to hit the nail upon the top and also defined out the whole thing with no need side-effects , other folks could take a signal.
Will likely be back to get more. Thanks
Thanks for your marvelous posting! I actually enjoyed reading
it, you happen to be a great author.I will be sure to bookmark
your blog and may come back in the future. I want to encourage
continue your great work, have a nice day! Here is my web page: golf swing (Kathy)
I’m gone to tell my little brother, that he should also pay a visit
this webpage on regular basis to get updated from most recent news. Take a look at my blog … madden 17 coins cheap
Hi there! I’m at work surfing around your blog from my new iphone 3gs! Just wanted to say I love reading your blog and look forward to all your posts! Carry on the excellent work! My blog post — mink lash extensions dublin
My developer is trying to convince me to move
to .net from PHP. I have always disliked the idea because
of the costs. But he’s tryiong none the less. I’ve been using
Movable-type on a variety of websites for about a year and am
worried about switching to another platform. I have heard very good
things about blogengine.net. Is there a way I can transfer all
my wordpress posts into it? Any kind of help would be
greatly appreciated! my web-site csgo skins free giveaway
I’m truly enjoying the design and layout of your website.
It’s a very easy on the eyes which makes it much
more pleasant for me to come here and visit more often. Did you hire out a developer to
create your theme? Excellent work!
When I initially commented I clicked the «Notify me when new comments are added» checkbox and now each time a comment is added I get several e-mails with the same comment.
Is there any way you can remove me from that service?
Thanks a lot! Feel free to visit my website: fifa 17 coins ps4 cheapest
I love your blog.. very nice colors & theme. Did you create this website yourself
or did you hire someone to do it for you?
Plz respond as I’m looking to create my own blog and would like to find out
where u got this from. appreciate it Look at my page; cs go skins steam free
Fascinating blog! Is your theme custom made or did you download it from somewhere?
A design like yours with a few simple adjustements would really make my blog stand
out. Please let me know where you got your design. Thanks Also visit my web blog siberian mink lashes for sale
Oh my goodness! Incredible article dude! Thank you so much, However I am encountering difficulties with
your RSS. I don’t understand why I can’t subscribe to it. Is there
anybody else getting similar RSS issues? Anybody who knows the answer will you kindly respond?
Thanx!! my web site … mink eyelash extensions nyc (Edwin)
You really make it seem so easy with your presentation but I find this topic to be actually something that I think I would never understand.
It seems too complex and very broad for me. I am looking forward for your next post, I
will try to get the hang of it! Also visit my homepage: fifa coins 17 buy
Ahaa, its pleasant dialogue on the topic of this piece of writing here at this weblog,
I have read all that, so now me also commenting at this place. Feel free to visit my web-site: csgo skins free download (http://www.iassoft.com/)
Greetings I am so excited I found your blog, I really found you by error, while
I was researching on Bing for something else, Nonetheless I am here now and would just like
to say cheers for a incredible post and a all round enjoyable blog (I also
love the theme/design), I don’t have time to read
it all at the minute but I have saved it and also added in your RSS feeds, so
when I have time I will be back to read much more, Please
do keep up the great work.
I really like what you guys are up too. This type of
clever work and reporting! Keep up the superb works guys I’ve added you guys to my blogroll.
Every weekend i used to pay a visit this web site,
for the reason that i want enjoyment, since this this web site conations genuinely fastidious
funny material too.
For latest news you have to pay a quick visit world wide web and on the
web I found this website as a most excellent
web site for newest updates. Also visit my web blog … mink strip lashes uk
I blog quite often and I really thank you for your content. The article has truly peaked my interest. I’m going to book mark your site and keep checking for new details about once per week. I subscribed to your Feed too. My homepage: fifa coins for sale usa
Wow, this post is fastidious, my sister is analyzing these things, therefore I am going to
inform her. my page: csgo skins free code
I like the helpful info you provide in your articles.
I’ll bookmark your blog and check again here regularly.
I am quite sure I will learn many new stuff right here! Best of luck for the next!
It’s appropriate time to make some plans for
the long run and it’s time to be happy. I have learn this post and if I could I
desire to counsel you some attention-grabbing things or tips.
Maybe you can write subsequent articles referring to this
article. I desire to read even more things about it!
Hi, its nice paragraph concerning media print,
we all understand media is a great source of data.
I am curious to find out what blog platform you’re using? I’m having some small security issues with my latest website and I’d
like to find something more safeguarded. Do you have any solutions?
If some one wishes to be updated with newest technologies therefore he must be go to see this
website and be up to date daily.
Hello, after reading this awesome post i am too glad to share
my know-how here with colleagues.
Wow, awesome blog format! How lengthy have you ever been running
a blog for? you made running a blog glance easy. The whole look of your site is magnificent, as smartly as the content! Also visit my web blog: madden mobile coin glitch no download
I loved as much as you will receive carried out right here.
The sketch is attractive, your authored material stylish.
nonetheless, you command get got an impatience over that you wish be delivering the following. unwell unquestionably come further formerly again as exactly the same
nearly a lot often inside case you shield this increase. Also visit my web-site — cs go skins for money
Currently it appears like WordPress is the preferred blogging platform available right now.
(from what I’ve read) Is that what you’re using on your blog? Check out my website: mink eyelash extensions nyc (http://unicadeck.cafe24.com/xe/ruleFAQ/1403139)
Generally I do not learn post on blogs, however I would
like to say that this write-up very forced me to try and do so!
Your writing style has been amazed me. Thanks, very nice post.
I read this post fully on the topic of the comparison of latest and previous
technologies, it’s amazing article.
Wow, wonderful weblog structure! How long have you ever
been running a blog for? you made blogging look easy. The full glance of your site is magnificent, let alone the content! Here is my web page; madden mobile coins apk
I loved as much as you’ll receive carried out right
here. The sketch is tasteful, your authored subject matter stylish.
nonetheless, you command get got an nervousness over that you wish be delivering the following. unwell unquestionably come further formerly again as
exactly the same nearly very often inside case you shield this increase. Feel free to surf to my site :: mink lash extensions kit
Hello to all, how is the whole thing, I think every
one is getting more from this website, and your views are nice for new visitors. Also visit my site: csgo skins betting sites
I’ve been surfing online more than 3 hours as of late, but I never
found any fascinating article like yours. It’s lovely worth
enough for me. In my view, if all web owners and bloggers made excellent
content material as you did, the internet will be a lot more useful than ever before. My website … silk lash extensions perth
Hi, after reading this remarkable paragraph i am as well delighted to share my experience here with friends. My page: nba mobile coins for free
I was able to find good info from your blog posts. Feel free to visit my blog … cs go skins steam workshop
Thanks for finally talking about > Пи­тон, де­вуш­ки, и объ­ект­но-ори­ен­ти­ро­ван­ное про­грам­ми­ро­ва­ние |
Image Processing < Liked it! Feel free to visit my web blog; csgo skins
steam wallet
Hi my family member! I want to say that this article is amazing, great
written and come with approximately all significant infos.
I’d like to look more posts like this . My page; cs go weapon skins steam
Thank you, I have recently been searching for info about this subject for
a while and yours is the greatest I’ve discovered so far. However, what concerning the conclusion? Are you sure about the supply? Here is my weblog … individual mink lashes for sale
When someone writes an paragraph he/she keeps the plan of a user in his/her brain that how a user can know it.
So that’s why this post is great. Thanks! Also visit my website fifa 17 coins xbox one ebay
hey there and thank you for your info – I have certainly picked up something new from right here. I did however expertise a few technical points using this website, as I experienced to
reload the website lots of times previous
to I could get it to load correctly. I had been wondering if your web
hosting is OK? Not that I’m complaining, but sluggish loading instances times will very frequently affect your
placement in google and could damage your quality score if advertising and
marketing with Adwords. Anyway I am adding this RSS to my email and could look out for much more of your respective interesting content.
Ensure that you update this again very soon. Look at my web-site csgo skins price list
Woah! I’m really digging the template/theme of this blog.
It’s simple, yet effective. A lot of times it’s tough
to get that «perfect balance» between usability and appearance. I must say that you’ve done a great job with this. Also, the blog loads very fast for me on Safari. Exceptional Blog! My page :: madden mobile how to quick sell coin ups
Hey I know this is off topic but I was wondering if you
knew of any widgets I could add to my blog that automatically tweet my newest twitter updates.
I’ve been looking for a plug-in like this for quite some time and was hoping maybe you would have some experience with
something like this. Please let me know if you run into
anything. I truly enjoy reading your blog and I look forward to your new updates. Review my site nba live coins reddit
Hi! This is my 1st comment here so I just wanted to give a quick shout out and
tell you I really enjoy reading through your posts.
Can you suggest any other blogs/websites/forums that deal with the same subjects?
Thank you! Here is my webpage — synthetic mink lashes for sale
What’s up to every one, because I am truly keen of reading this blog’s post to be updated
regularly. It carries good stuff. my webpage :: csgo skins steam wallet
Hey There. I found your blog the use of msn. This is a very well
written article. I’ll be sure to bookmark it and come back to learn extra of your helpful information. Thanks for the
post. I’ll definitely return. Review my weblog — nba live coins generator
Today, while I was at work, my sister stole my iphone and tested to see if it can survive a twenty five foot drop, just so she can be a youtube sensation. My apple ipad is now
destroyed and she has 83 views. I know this is totally
off topic but I had to share it with someone! Feel free to surf to my site :: gaming keyboard tips (http://www.italianrooster.it)
Very soon this web site will be famous among all
blog users, due to it’s pleasant content Feel free to surf to my website; csgo skins for sale paypal (Ofelia)
Hi there would you mind sharing which blog platform you’re using?
I’m looking to start my own blog soon but I’m having a difficult time deciding between BlogEngine/Wordpress/B2evolution and Drupal. The reason I ask is because your design and style seems different then most
blogs and I’m looking for something unique.
P.S Sorry for being off-topic but I had
to ask! Feel free to visit my web blog; combat arms players (Tonya)
Does your website have a contact page? I’m having problems locating it but, I’d like
to send you an e-mail. I’ve got some suggestions for
your blog you might be interested in hearing. Either way, great website and I look forward to
seeing it improve over time. Feel free to visit my blog; silk lashes and beauty rochester ny (Darin)
Hello, i think that i saw you visited my website so
i came to “return the favor”.I am trying to
find things to improve my site!I suppose its ok to use a few of
your ideas!! Here is my website: madden 11 free (Dessie)
Hello to every body, it’s my first go to see of this
blog; this weblog consists of remarkable and really good stuff designed for readers. my blog post :: ncaa football 10 (Crystle)
Hi, just wanted to say, I loved this post.
It was helpful. Keep on posting! Also visit my web site … silk lashes vs synthetic (https://www.brightstarcash.com/)
Quality articles or reviews is the main to attract the visitors to
go to see the web site, that’s what this website is providing. my webpage :: silk lash extensions review (Melinda)
Hi, Neat post. There’s an issue with your web site in internet
explorer, might check this? IE still is the marketplace chief and a good component of folks will miss
your wonderful writing due to this problem.
It’s in fact very difficult in this busy life to listen news on Television, thus I only
use internet for that purpose, and get the newest news. Look into my web blog … csgo skins free spin (Ernestina)
obviously like your web site but you have to check the spelling on several of your posts.
Several of them are rife with spelling issues and I in finding it very troublesome to tell the truth however I will definitely come again again. Here is my web page; faux mink lashes for sale [Mavis]
Hi are using WordPress for your site platform? I’m new
to the blog world but I’m trying to get started and create my own. Do
you need any html coding expertise to make your own blog?
Any help would be really appreciated! Look into my web site — fifa coins free
Hello I am so glad I found your blog, I really found you by accident, while I was looking on Askjeeve for something else, Nonetheless
I am here now and would just like to say kudos for
a tremendous post and a all round interesting blog (I also love the theme/design), I don’t have time to go through it all at the minute but I have bookmarked it and also added your RSS feeds, so when I have time I will be back to read a lot more, Please
do keep up the excellent job. Also visit my web blog; csgo skins free 2016 (Dani)
Hey there! I know this is kinda off topic but I was wondering which blog platform are you using
for this site? I’m getting tired of WordPress because
I’ve had problems with hackers and I’m looking
at options for another platform. I would be awesome if you could point me in the direction of a good platform. Here is my site — silk lashes buy
Wow, that’s what I was looking for, what a stuff! present here at this webpage, thanks admin of this website. Take a look at my weblog; madden mobile coin sale
Hello! Do you know if they make any plugins to help
with Search Engine Optimization? I’m trying to get my blog
to rank for some targeted keywords but I’m not seeing very good gains.
If you know of any please share. Thanks! my webpage: silk lashes vs synthetic
Hello this is kind of of off topic but I was wanting to know if blogs
use WYSIWYG editors or if you have to manually code with HTML.
I’m starting a blog soon but have no coding experience so I wanted to get guidance from someone
with experience. Any help would be enormously appreciated! Also visit my blog post — cs go bet skins on matches
(Dannielle)
I’ve been browsing on-line greater than three hours these days, but I by no means
discovered any interesting article like yours. It’s beautiful worth sufficient for me. In my opinion, if all site owners and bloggers made just right content as you probably did,
the internet will be much more useful than ever before. Visit my page :: nba live coins and cash
Normally I do not learn article on blogs, however I wish to say
that this write-up very pressured me to try and do it!
Your writing taste has been surprised me. Thanks, very nice article. my blog post … madden mobile coin glitch for iphone (lovemekiss.com)
If you are going for finest contents like me, just
pay a quick visit this web site everyday for the reason that it gives feature contents, thanks My webpage — diamond silk lashes review; http://mis.yongin.ac.kr/commu_schedules/380956,
Attractive section of content. I just stumbled upon your website and in accession capital to assert that
I get in fact enjoyed account your blog posts. Any way
I’ll be subscribing to your feeds and even I achievement you access consistently rapidly. Here is my webpage; cs go skin trade hack (Heidi)
My brother suggested I might like this blog. He was totally right. This post actually made my day. You can not imagine
just how much time I had spent for this info! Thanks! Have a look at my blog … hand-held video game (Isaac)
Excellent post! We are linking to this particularly great article on our website.
Keep up the great writing. my webpage: csgo skins free 2016 (Shauna)
Greetings! Very helpful advice in this particular article!
It’s the little changes that make the most significant
changes. Many thanks for sharing! My site :: synthetic mink lashes for sale — Leandro,
I always used to study piece of writing in news papers but now
as I am a user of internet therefore from now I am using net for
articles or reviews, thanks to web. my homepage :: madden mobile coin sell (Chante)
I’ll right away take hold of your rss as I can’t in finding your e-mail subscription hyperlink or e-newsletter service. Do you’ve any? Please let me understand so that I
may just subscribe. Thanks. Here is my web page … cs go bet skins on games (Margarette)
Hi my family member! I wish to say that this article is awesome,
great written and include almost all vital infos.
I’d like to peer more posts like this . Feel free to visit my web-site … mink lash extensions vs. synthetic
Everyone loves what you guys are usually up too. Such clever work and coverage! Keep up the amazing works guys I’ve included you guys to blogroll. Here is my web page — nba live coins and cash
Fantastic website. Plenty of helpful info here. I am sending it to several pals ans also sharing
in delicious. And certainly, thank you for your sweat! My site nba mobile coins for free
I love your blog.. very nice colors & theme. Did you make this website yourself or did you hire someone to do
it for you? Plz answer back as I’m looking to create my own blog and
would like to know where u got this from. many thanks Here is my site silk lash extensions london
I am sure this paragraph has touched all the internet viewers, its really really fastidious paragraph on building up new blog.
Can I simply just say what a relief to uncover a person that actually knows what they
are talking about online. You actually understand how to bring an issue
to light and make it important. A lot more people really need
to look at this and understand this side of your story.
I was surprised that you are not more popular since you surely have
the gift. Look at my page … fifa coins buy
You could certainly see your expertise within the work you write. The world hopes for even more passionate writers such as you who are not afraid to mention how they
believe. At all times go after your heart. Look at my web site :: fifa ultimate team coins reddit (Darcy)
A person necessarily lend a hand to make critically posts I might state.
That is the very first time I frequented your web page
and up to now? I amazed with the research you made to make this particular post incredible.
Great process! Have a look at my homepage … madden mobile coins for sale kik
I am not sure where you’re getting your information, but great topic. I needs to spend some time learning more or understanding
more. Thanks for wonderful info I was looking for this information for my mission. My web site: cs go skins prices in keys
Since the admin of this site is working, no uncertainty very rapidly
it will be renowned, due to its quality contents. Look into my page: silk lash extensions sydney — Margie,
I loved as much as you will receive carried out right here.
The sketch is tasteful, your authored subject matter stylish.
nonetheless, you command get got an edginess over that you wish be
delivering the following. unwell unquestionably come more formerly again since exactly the same nearly a lot often inside case you shield this increase. My web blog — pubg skins (Holly)
I have been exploring for a little bit for any high quality articles or blog posts on this sort of
house . Exploring in Yahoo I at last stumbled upon this web site. Studying this information So i am glad to express that I’ve
an incredibly just right uncanny feeling I discovered exactly what I needed.
I most undoubtedly will make certain to don?t put out of your mind this
site and give it a glance regularly. Feel free to visit my blog post — mink eyelash extensions for sale
Fantastic items from you, man. I’ve be aware your stuff previous to
and you’re just extremely magnificent. I actually like what
you’ve got right here, really like what you are saying and the way
by which you say it. You make it enjoyable and you continue to
care for to keep it smart. I can not wait to learn far more from you.
This is actually a great web site. Here is my blog :: hut coins (Mariana)
Good site you have got here.. It’s hard to find high-quality writing like yours these days. I honestly appreciate people like you! Take care!! Also visit my web page … buy cs go skins steam
Good blog post. I absolutely appreciate this site. Stick with it! Stop by my web blog — nba live coins ios
Hi there, You have done an excellent job. I’ll certainly digg it and personally suggest to my friends.
I am confident they will be benefited from this web
site. my web-site — nhl coins
Hi there! I could have sworn I’ve visited this web site
before but after looking at many of the posts
I realized it’s new to me. Anyways, I’m certainly pleased I came across it
and I’ll be book-marking it and checking back regularly! Here is my page … csgo skins (Fidel)
When I initially commented I clicked the «Notify me when new comments are added» checkbox and now each
time a comment is added I get four e-mails with the same comment. Is there any way you can remove me from that service? Thanks a lot! Feel free to visit my page … nba live coins generator — Aurelio
-
Very good info. Lucky me I recently found your blog by accident (stumbleupon).
I have book marked it for later!
Hello there! Would you mind if I share your blog with my myspace group?
There’s a lot of people that I think would really enjoy your
content. Please let me know. Cheers
Hurrah, that’s what I was looking for, what a stuff!
present here at this blog, thanks admin of this website.
Superb blog! Do you have any recommendations for aspiring writers?
I’m hoping to start my own blog soon but I’m a little lost on everything.
Would you recommend starting with a free platform like WordPress or
go for a paid option? There are so many options out there that I’m completely confused ..
Any tips? Cheers! Take a look at my site cheap nba live coins (nanotube.skku.ac.kr)
I used to be able to find good information from your blog
posts. My webpage madden mobile coins
I know this website presents quality dependent posts and additional information, is there any other web page which offers such data in quality? Here is my website — buy csgo skins (http://silobyte.com/index.php?qa=53437&qa_1=top-5-unheardof-free-firstperson-shooting-games)
Hurrah! Finally I got a web site from where I know how to genuinely get valuable information concerning my study
and knowledge. my page; cheap mink eyelashes [Lucienne]
Have you ever considered creating an ebook or guest
authoring on other blogs? I have a blog centered on the same ideas you discuss and would really like to have you share
some stories/information. I know my subscribers would enjoy your work.
If you’re even remotely interested, feel free to shoot me
an e-mail. Also visit my website — nhl 17 coins (Arron)
Hiya! I know this is kinda off topic nevertheless I’d figured I’d ask. Would you bbe interested in exchanging links or maye guest
writing a blog article or vice-versa? My blog
goes over a lot of the same topics as yours and I think
we could greatly benefit from eachh other. If you might be interested feel free tto shoot mee an e-mail.
I look forward to hearing from you! Terrific blog by the way! Here is my webpage — institute
Great article. Feel free to visit my web page nba live mobile
coins — Angela -
I am not positive where you’re getting your information, however great topic.
I must spend some time finding out much more or
working out more. Thanks for wonderful information I was in search of this information for my mission. Feel free to surf to my blog post :: buy h1z1 kotk skins
This article is in fact a nice one it helps new the web
users, who are wishing for blogging. Visit my web-site buy fifa 18 coins (speerp.co.kr)
If you desire to get a good deal from this paragraph then you have to
apply such strategies to your won blog. Feel free to visit my web site buy pubg items
Very rapidly this web page will be famous among all blogging
visitors, due to it’s good posts my page; nba mobile coins
Very great post. I just stumbled upon your blog and wished to say that I have truly loved surfing
around your blog posts. After all I will be subscribing to your feed and I am hoping you
write again very soon! Also visit my site buy fut 18 coins (Wilhelmina)
I couldn’t resist commenting. Perfectly written! My website — cheap h1z1 skins
I am really inspired along with your writing talents as
smartly as with the structure to your blog.
Is that this a paid subject or did you customize it yourself?
Either way stay up the nice quality writing, it is uncommon to look a great weblog like this
one nowadays.. My webpage; buy nba live coins
Simply wish to say your article is as astonishing. The clarity in your post is simply nice and i could assume you are an expert
on this subject. Fine with your permission let me to grab your RSS feed to keep up to
date with forthcoming post. Thanks a million and please keep up the enjoyable work. my homepage :: cheap madden mobile coins [Delmar]
I’m not that much of a online reader to be honest but your blogs really nice, keep it up!
I’ll go ahead and bookmark your website to come back in the
future. Cheers My web page; mink eyelashes
Nice post. I learn something new and challenging
on websites I stumbleupon everyday. It’s always
helpful to read content from other writers and use a little something from
other sites. Feel free to visit my blog; buy fut 18 coins
Wow, fantastic blog structure! How lengthy have you been blogging for?
you make running a blog glance easy. The total glance of your web site is excellent, let alone the
content! my blog post … nba live coins (Sandy)
Hi, I log on to your blog daily. Your humoristic style is
witty, keep up the good work! Also visit my webpage csgo skins free (Lindsay)
I have been exploring for a little bit for any high quality articles or weblog posts in this kind of space .
Exploring in Yahoo I eventually stumbled upon this site.
Reading this information So i am satisfied to convey that I’ve an incredibly just
right uncanny feeling I came upon exactly what
I needed. I so much surely will make certain to don?t fail to
remember this website and give it a glance regularly.
Great article! That is the kind of info that are meant to
be shared across the internet. Shame on the seek engines for
no longer positioning this put up higher! Come on over
and discuss with my website . Thank you =)
It’s very simple to find out any topic on net as compared
to books, as I found this post at this web page.
Wonderful work! That is the kind of info that are supposed
to be shared across the net. Shame on Google for not positioning this submit higher! Come on over and seek advice from my website
. Thanks =)
Today, I went to the beach front with my kids.
I found a sea shell and gave it to my 4 year old daughter and said «You can hear the ocean if you put this to your ear.» She placed the shell to her ear
and screamed. There was a hermit crab inside and it pinched her
ear. She never wants to go back! LoL I know this is totally off topic but I had to
tell someone!
Greetings! Very useful advice in this particular article!
It’s the little changes that produce the most significant changes.
Many thanks for sharing!
Thank you for the good writeup. It in fact was a amusement
account it. Look advanced to more added agreeable from
you! By the way, how can we communicate?
What’s up friends, how is everything, and what you want to say concerning this piece
of writing, in my view its really remarkable in support of me.
This is the perfect webpage for anybody who wishes to understand this topic.
You understand a whole lot its almost hard to argue with you (not that
I personally would want to…HaHa). You definitely put a fresh spin on a
topic which has been discussed for a long time.
Wonderful stuff, just wonderful!
It’s a pity you don’t have a donate button! I’d definitely
donate to this superb blog! I suppose for now i’ll settle for book-marking and adding your RSS
feed to my Google account. I look forward to fresh updates and will talk about this website with my Facebook group.
Talk soon!
Yesterday, while I was at work, my sister stole my iPad and tested
to see if it can survive a twenty five foot drop, just so she can be a youtube sensation.
My iPad is now destroyed and she has 83 views. I know this is completely off topic but I had to share it
with someone!
Pretty nice post. I just stumbled upon your weblog and wished to mention that I’ve
truly loved surfing around your blog posts. After all I’ll be subscribing in your rss feed and I’m hoping
you write once more very soon!
Excellent site you have here but I was wondering if you knew
of any community forums that cover the same topics discussed in this article?
I’d really like to be a part of group where I can get opinions from other experienced individuals that share the same interest.
If you have any recommendations, please let me know. Appreciate it!
Hi every one, here every person is sharing these familiarity, so it’s pleasant to read this website, and I used to pay
a quick visit this weblog daily.
You’re so awesome! I do not believe I have read through something like
this before. So good to find somebody with genuine thoughts on this topic.
Seriously.. many thanks for starting this up.
This website is something that is needed on the web, someone with some
originality!
Cool blog! Is your theme custom made or did you
download it from somewhere? A design like yours with a few simple adjustements would really make my blog stand out.
Please let me know where you got your design. Appreciate it

Оставить отзыв

Жёлтые поля обязательны к заполнению

   

Можете использовать теги <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang=""> <div class=""> <span class=""> <br>