Мұрагерлік: базалық кластар негізінде арнайы кластар құруға болады. Сол арқылы кодты қайталап жазудан арылуға болады.
Композиция: объект бірнеше объектіден құралған құрамдас күрделі объект болуы мүмкін.
Кластар
Класс – дегеніміз объект құрылғыларын сипаттайтын тип. Объект – ол кластың данасы.
Python Объектіге бағытталған программалау принциптеріне сәйкес келеді. Python ішінде барлығы да объект болып табылады – жолдар да, тізімдер де, сөздіктер де, қалған барлығы да. Класты сипаттаудың қарапайым моделі мынадай болады: class класс аты: инструкция1
...
инструкцияN
Әдетте, әдістің атындағы бірінші аргумент – self. Тілдің авторы Гвидо Ван Россум айтқандай, бұл келісім ғана: self деген атаудың ешқандай да арнайы мағынасы жоқ. self аргументі кластың басқа атрибуттарына бару үшін ғана пайдалы.
# Python-да өзіміздің класымызды жазайық. class A:
і = 0 # Класс атрибуты
def prnt(self): # Класс әдісі print(self.i)
# Енді осы кластың бірнеше данасын кэдэа аламыз а = А() # Дана 'а' b = А() # Дана 'b'
a.і = 3 # 'а' данасының 'і' атрибуты, тең болады 3
b.і = 5 # 'b' данасының 'і' атрибуты, тең болады 5
a.prnt() # 'а' данасы әдісін шақыру
b.pmt() # 'b' данасы әдісін шақыру
Нәтижесі:
3
5
Инкапсуляция
Инкапсуляция дегеніміз – объект құрамындағы компоненттерге (әдістер мен айнымалыларға) баруды шектеу. Инкапсуляция көмегімен кейбір компоненттер тек қана класс ішінде қолжетімді болады. Python ішіндегі инкапсуляция программалаушылар арасындағы келісімге байланысты іске асады, қайсы атрибутты жалпыға қолжетімді ету немесе қайсысын ішкі атрибут ретінде белгілеу – әр программада жеке шешіледі.
Атрибут атының басындағы астын бір рет сызу – айнымалы немесе әдістің кластан тыс қолданылмайтындығын, бірақ осы ат бойынша қолжетімді екендігін көрсетеді.
Атрибут атының басындағы астын екі рет сызу – оның қорғаныс қауіпсіздігін үлкейтеді:
атрибут осы аты бойынша қолжетімсіз бола бастайды (мына біздің мысалда жұмыс істемеуі мүмкін, бірақ өз инспекторыңызда жасап көріңіз). Екі рет сызсақ та, атрибут толық қорғалмайды және: b.В private() атымен қолжетімді болып қала береді.
class A: def _private(self):
ргіпІ("Бұл приват әдісі!") а = А()
a._private()
Нәтижесі: Бұл приват әдісі!