ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

РСгулярныС выраТСния. 
Π’Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ программирования

Π Π΅Ρ„Π΅Ρ€Π°Ρ‚ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

ВозмоТности классов ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ся лишь объСдинСниСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΏΠΎΠ΄ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ, Ρ‚. Π΅. Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ΠΌ состояния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. ΠšΠ»Π°ΡΡΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ сСбя {ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹) для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠΎΠ»ΡΠΌΠΈ класса, Ρ‚. Π΅. Π²Π»ΠΈΡΡ‚ΡŒ Π½Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Для дСмонстрации создадим класс Dog: Π›Π°ΠΉΠΊΠ° Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ для обращСния ΠΊ ΠΈΠΌΠ΅Π½ΠΈ собаки ΠΌΡ‹ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠ»ΠΈ Π½Π° ΡΠΊΡ€Π°Π½ ΠΏΠΎΠ»Π΅ myDog. пашС, Ρ‚. Π΅… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

РСгулярныС выраТСния. Π’Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ программирования (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Python ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ язык рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ[1], Ρ‚. Π΅. шаблонов, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΊΠ°Ρ‚ΡŒ/Π·Π°ΠΌΠ΅Π½ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ тСкст. НапримСр, рСгулярноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ '[са]' ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ любой символ ΠΈΠ· Π½Π°Π±ΠΎΡ€Π° Π² ΡΠΊΠΎΠ±ΠΊΠ°Ρ…, Ρ‚. Π΅. рСгулярноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ 'r[ea]d' совпадаСт с 'red' ΠΈ 'radar', Π½ΠΎ Π½Π΅ ΡΠΎ словом 'read'. Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ€Π΅Π³ΡƒΠ»ΡΡ€Π½Ρ‹ΠΌΠΈ выраТСниями Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π³Π΅:

>" import re.

>" re. search («r[ea]d», «rad») # ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ шаблон ΠΈ Ρ‚Скст.

>" re. search («r [ea] d», «read»).

«> re. search!» [1−8] «, «3»).

<_sre.SRE_Match object; span=(0, 1), match=,3'>

>" re. search («[ 1−8]», «9»).

>".

Π’ ΡΠ»ΡƒΡ‡Π°Π΅ совпадСния тСкста с ΡˆΠ°Π±Π»ΠΎΠ½ΠΎΠΌ возвращаСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ match[2], ΠΈΠ½Π°Ρ‡Π΅ возвращаСтся None.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Python

ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ сущСствуСт Π½Π°Π±ΠΎΡ€ строковых ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… для описания адрСса проТивания Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°:

addr_name = 'Иван Иванов'.

addr_linel = 'Московский ΠΏΡ€. 122' # адрСс прописки addr_line2 = ' ' # фактичСский адрСс проТивания.

addr_city = 'Москва'.

addr_state = 'Восточный' # административный ΠΎΠΊΡ€ΡƒΠ³.

addr_zip = '123 678' # индСкс адрСса прописки НапишСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ (addr.py), которая Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π½Π° ΡΠΊΡ€Π°Π½ всю ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ΅:

def printAddress (name, linel, line2, city, state, zip_code):

print (name) if (len (linel) > 0): print (linel) if (len (line2) > 0): print (line2).

print (city + «, «+ state + «» + zip_code).

# Π’Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²: printAddress (addr_name, addr_linel, addr_line2,.

addr_city, addr_state, addr_zip).

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠ΅ΠΉΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (addr.py):

Иван Иванов Московский ΠΏΡ€. 122 Москва, Восточный 123 678.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, измСнились свСдСния ΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ΅ ΠΈ ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ индСкс адрСса проТивания. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π½ΠΎΠ²ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ:

# создадим ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ индСкс адрСса проТивания addr_zip2 = «678 900» .

Ѐункция printAddress с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ Π½ΠΎΠ²Ρ‹Ρ… свСдСний Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄ (addrl.py):

def printAddress{.

name, linel, line2, city, state, zip, zip2):

# Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ zip2 print (name).

if (len (linel) > 0): print (linel) if (len (line2) > 0): print (line2).

# Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π²Ρ‹Π²ΠΎΠ΄ Π½Π° ΡΠΊΡ€Π°Π½ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ zip2.

print (city + «, «+ state + «» + zip + «» + zip2).

# Π”ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π½ΠΎΠ²Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ addr_zip2:

printAddress (addr_name, addr_linel, addr_line2, addr_city, addr_state, addr_zip, addr_zip2).

ΠŸΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… мСстах ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ исходный тСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (addrl.py), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡ‡Π΅ΡΡ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ условиС. Π’ Ρ‡Π΅ΠΌ состоит нСдостаток рассмотрСнного ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°? ΠžΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…! Π§Π΅ΠΌ большС свСдСний ΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ΅ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, Ρ‚Π΅ΠΌ большС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ всС Π² ΡΠΏΠΈΡΠΎΠΊ (элСмСнтами списка Ρ‚ΠΎΠ³Π΄Π° Π±ΡƒΠ΄ΡƒΡ‚ строки), Π½ΠΎ Π² Python Π΅ΡΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½Π°Π±ΠΎΡ€Π°ΠΌΠΈ Ρ€Π°Π·Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

ОбъСдиним всС свСдСния ΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ΅ Π² Π΅Π΄ΠΈΠ½ΡƒΡŽ структуру {класс) с ΠΈΠΌΠ΅Π½Π΅ΠΌ Address:

class Address (): # имя класса Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ программист.

name = «» # строковоС ΠΏΠΎΠ»Π΅ класса.

linel = ?" line2 = «» city = «» state = «» zip_code = «» .

Класс Π² Π½Π°ΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π·Π°Π΄Π°Π΅Ρ‚ шаблон для хранСния мСста проТивания Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°. ΠŸΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ шаблон Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ адрСс ΠΌΠΎΠΆΠ½ΠΎ Ρ‡Π΅Ρ€Π΅Π· созданиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° (экзСмпляра)1 класса Address[3][4]:

homeAddress = Address ().

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π·Π°ΠΏΠΎΠ»Π½ΠΈΠΌ поля ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌΠΈ значСниями (Ρ‡Π΅Ρ€Π΅Π· Ρ‚ΠΎΡ‡ΠΊΡƒ):

## заполняСм ΠΏΠΎΠ»Π΅ name ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° homeAddress:

homeAddress.name = «Π˜Π²Π°Π½ Иванов» .

homeAddress.linel = «ΠœΠΎΡΠΊΠΎΠ²ΡΠΊΠΈΠΉ ΠΏΡ€. 122» homeAddress. Iine2 = «Π’ихая ΡƒΠ». 12» homeAddress. city = «ΠœΠΎΡΠΊΠ²Π°» homeAddress. state = «Π’осточный» homeAddress. zip_code = «123 678» .

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса Address, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π·Π°Π³ΠΎΡ€ΠΎΠ΄Π½ΠΎΠΌ Π΄ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°:

# пСрСмСнная содСрТит адрСс ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса Address: vacationHomeAddress = Address!).

Π—Π°Π΄Π°Π΄ΠΈΠΌ поля ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, адрСс ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ находится Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ vacationHomeAddress:

vacationHomeAddress.name = «Π˜Π²Π°Π½ Иванов» vacationHomeAddress. linel = «ΠΏΡ€.ΠœΠΈΡ€Π° 12» vacationHomeAddress. Iine2 = «» vacationHomeAddress. city = «ΠšΠΎΠ»ΠΎΠΌΠ½Π°» vacationHomeAddress. state = «Π¦Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°ΠΉΠΎΠ½» vacationHomeAddress. zip_code = «12 489» .

Π’Ρ‹Π²Π΅Π΄Π΅ΠΌ Π½Π° ΡΠΊΡ€Π°Π½ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π³ΠΎΡ€ΠΎΠ΄Π΅ для основного ΠΈ Π·Π°Π³ΠΎΡ€ΠΎΠ΄Π½ΠΎΠ³ΠΎ адрСсов проТивания (Ρ‡Π΅Ρ€Π΅Π· ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²):

print («ΠžΡΠ½ΠΎΠ²Π½ΠΎΠΉ адрСс проТивания «+ homeAddress. city) print («ΠΠ΄Ρ€Π΅Ρ Π·Π°Π³ΠΎΡ€ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π΄ΠΎΠΌΠ° «.

+ vacationHomeAddress. city).

ИзмСним исходный ΠΊΠΎΠ΄ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ printAddress с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… Π·Π½Π°Π½ΠΈΠΉ ΠΎΠ± ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ…:

def printAddress (address): # ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ print (address.name) # Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π½Π° ΡΠΊΡ€Π°Π½ ΠΏΠΎΠ»Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

if (len (address.linel) > 0): print (address.linel) if (len (address.Iine2) > 0): print (address.Iine2).

print (address.city + «, «+ address. state + ««.

+ address. zip_code).

Если ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ homeAddress ΠΈ vacationHomeAddress Ρ€Π°Π½Π΅Π΅ Π±Ρ‹Π»ΠΈ созданы, Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ вывСсти ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π½ΠΈΡ…, ΠΏΠ΅Ρ€Π΅Π΄Π°Π² Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ printAddress:

printAddress (homeAddress) printAddress (vacationHomeAddress).

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (addr2.py) ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ:

Основной адрСс проТивания Москва АдрСс Π·Π°Π³ΠΎΡ€ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π΄ΠΎΠΌΠ° Коломна Иван Иванов Московский ΠΏΡ€. 122 Вихая ΡƒΠ». 12.

Москва, Восточный 123 678 Иван Иванов ΠΏΡ€. ΠœΠΈΡ€Π° 12.

Коломна, Π¦Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°ΠΉΠΎΠ½ 12 489.

ВозмоТности классов ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ся лишь объСдинСниСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΏΠΎΠ΄ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ, Ρ‚. Π΅. Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ΠΌ состояния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. ΠšΠ»Π°ΡΡΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ сСбя {ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹) для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠΎΠ»ΡΠΌΠΈ класса, Ρ‚. Π΅. Π²Π»ΠΈΡΡ‚ΡŒ Π½Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Для дСмонстрации создадим класс Dog:

# ndog.Ρ€Ρƒ class Dog ():

age =0 # возраст собаки.

name = «» # имя собаки.

weight = 0 # вСс собаки.

# ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ любого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° всСгда являСтся.

# self, Ρ‚. Π΅. сам ΠΎΠ±ΡŠΠ΅ΠΊΡ‚:

def bark (self): # функция Π²Π½ΡƒΡ‚Ρ€ΠΈ класса называСтся # ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ.

# self. пашС — ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ ΠΈΠΌΠ΅Π½ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ.

# ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°-собаки.

print (self. name, «Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ Π³Π°Π²11).

# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ myDog класса Dog: myDog = Dog ().

# ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΠΌ значСния полям ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° myDog: myDog. пашС = «Π›Π°ΠΉΠΊΠ°» # имя собаки.

myDog.weight =20 # вСс собаки.

myDog.age =1 # возраст собаки.

# Π’Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ bark ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° myDog,.

# Ρ‚. Π΅. попросим собаку ΠΏΠΎΠ΄Π°Ρ‚ΡŒ голос: myDog. bark ().

# Полная Ρ„ΠΎΡ€ΠΌΠ° для Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° myDog. bark ().

# Π±ΡƒΠ΄Π΅Ρ‚: Dog. bark (myDog), Π³Π΄Π΅ myDog — сам ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ (self).

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

Π›Π°ΠΉΠΊΠ° Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ Π³Π°Π² Π”Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ дСмонстрируСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΊ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ. ΠœΠ΅ΠΆΠ΄Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ происходит взаимодСйствиС ΠΏΠΎ ΡΡ€Π΅Π΄ΡΡ‚Π²Π°ΠΌ Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². Поля ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° (ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅) Ρ„ΠΈΠΊΡΠΈΡ€ΡƒΡŽΡ‚ Π΅Π³ΠΎ состояниС, Π° Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ€Π΅Π°ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈ (ΠΈΠ»ΠΈ) измСнСнию Π΅Π³ΠΎ состояния (измСнСнию ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°).

Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ созданиСм ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° myDog класса Dog ΠΈ ΠΏΡ€ΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠ΅ΠΌ Π΅ΠΌΡƒ ΠΈΠΌΠ΅Π½ΠΈ (myDog.name = «Π›Π°ΠΉΠΊΠ°») ΠΏΡ€ΠΎΡˆΠ»ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя. ΠœΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΡ‚ΠΈ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ программист Π·Π°Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ имя, ΠΈ Ρ‚ΠΎΠ³Π΄Π° собака останСтся бСзымянной — Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ нСльзя. Π˜Π·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ ошибки позволяСт ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ {конструктор), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ вызываСтся автоматичСски Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ класса. Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ конструктора:

# dogl. py class Dog ():

name = «» .

# ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ вызываСтся Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

# этого класса;

# ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Python, поэтому Π΄Π²Π° Π½ΠΈΠΆΠ½ΠΈΡ….

# подчСркивания.

def _init_(self):

print («Π ΠΎΠ΄ΠΈΠ»Π°ΡΡŒ новая собака!»).

# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ собаку (ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ myDog класса Dog) myDog = Dog (}.

Запустим ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ:

Родилась новая собака!

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ дСмонстрируСт присвоСниС ΠΈΠΌΠ΅Π½ΠΈ собакС Ρ‡Π΅Ρ€Π΅Π· Π²Ρ‹Π·ΠΎΠ² конструктора класса:

# dog2. py class Dog ():

name = «» .

# ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€

# ВызываСтся Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° этого класса.

def _init_(self, newName):

self.name = newName.

# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ собаку ΠΈ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π΅Π΅ ΠΈΠΌΡ: myDog = Dog («Π›Π°ΠΉΠΊΠ°»).

# Π’Ρ‹Π²ΠΎΠ΄ΠΈΠΌ имя собаки: print (myDog.name).

# Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° выдаст ΠΎΡˆΠΈΠ±ΠΊΡƒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ.

# конструктору Π½Π΅ Π±Ρ‹Π»ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ΠΎ имя:

# herDog = Dog ().

Π’Π΅ΠΏΠ΅Ρ€ΡŒ имя собаки присваиваСтся Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π΅Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ (роТдСния). Π’ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Π΅ ΡƒΠΊΠ°Π·Π°Π»ΠΈ self.name, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ‹Π·ΠΎΠ²Π° конструктора вмСсто self подставится ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Ρ‚. Π΅. myDog.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

Π›Π°ΠΉΠΊΠ° Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ для обращСния ΠΊ ΠΈΠΌΠ΅Π½ΠΈ собаки ΠΌΡ‹ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠ»ΠΈ Π½Π° ΡΠΊΡ€Π°Π½ ΠΏΠΎΠ»Π΅ myDog.пашС, Ρ‚. Π΅. Π·Π°Π»Π΅Π·Π°Π»ΠΈ Π²ΠΎ Π²Π½ΡƒΡ‚рСнности ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈ Π΄ΠΎΡΡ‚Π°Π²Π°Π»ΠΈ ΠΎΡ‚Ρ‚ΡƒΠ΄Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π½Π΅ΠΌ. Π—Π²ΡƒΡ‡ΠΈΡ‚ ΠΆΡƒΡ‚ΠΊΠΎΠ²Π°Ρ‚ΠΎ, поэтому для Π±ΠΎΠ»Π΅Π΅ «Π³ΡƒΠΌΠ°Π½Π½ΠΎΠΉ» Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π² ΠΊΠ»Π°ΡΡ Dog Π΄Π²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° setName ΠΈ gctName:

# dog3. py class Dog ():

name = «» .

# ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ вызываСтся Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

# этого класса.

def _init_(self, newName):

self.name = newName.

# МоТСм Π² Π»ΡŽΠ±ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ.

# имя собаки.

def setName (self, newName): self.name = newName.

# МоТСм Π² Π»ΡŽΠ±ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈ ΡƒΠ·Π½Π°Ρ‚ΡŒ имя.

# собаки.

def getName (self):

return self.name.

# Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ имя ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ собаку с Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ: my Dog = Dog («Π›Π°ΠΉΠΊΠ°»).

# Π’Ρ‹Π²ΠΎΠ΄ΠΈΠΌ имя собаки: print (myDog.getName ()).

# УстанавливаСм Π½ΠΎΠ²ΠΎΠ΅ имя собаки: myDog. setName («Π¨Π°Ρ€ΠΈΠΊ»).

# ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ, Ρ‡Ρ‚ΠΎ имя измСнилось: print (myDog.getName ()).

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ:

Π›Π°ΠΉΠΊΠ° Π¨Π°Ρ€ΠΈΠΊ.

  • [1] ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ см.: https://docs.python.Org/3/howto/regex.html.
  • [2] ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ см.: https://docs.python.Org/3/library/re.html#match-objects.
  • [3] Π’ Python классы ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, Π½ΠΎ Π΄Π»Ρ упрощСния Π±ΡƒΠ΄Π΅ΠΌ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, чтоэто Ρ‚ΠΎΠ»ΡŒΠΊΠΎ шаблон для создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².
  • [4] ВспомнитС ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса int: Π° = int ().
ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ