31
z*6
Super әдісі
Python тілінде әдетте объектілерге қолданылатын
super() әдісі бар. Оның негізгі міндеті –
мұрагер класта ата-ана класының әдістерін пайдалану мүмкіндігі.
Келесі мысал толық емес, сондықтан орындалмайды, дегенмен де оны көрсете кету керек:
class A:
def__init__(self):
print(u'A класының конструкторы')
# A класының мұрагері
class B(A):
def__init__(self):
print(u'B класының конструкторы')
super(B, self).__init__()
a = B()
Нәтижесі:
В класының конструкторы
ReferenceError: $$super is not defined
Статикалық әдістер
Класс данасын құрмай-ақ класс ішінде қолжетімді болатын әдісті құруға болады. Ол үшін
класс ішінде әдісті анықтамастан бұрын @staticmethod декораторын көрсету керек.
class A:
@staticmethod
def mymethod(a, b):
return a + b
print(A.mymethod(12, 13))
Нәтижесі:
25
Құжатқа қолжетімді болу үшін
__doc__ арнайы әдісі қарастырылған.
Python интерпре-
таторы кластың немесе функцияның бастапқы кодын өңдеген
кезде құжаттау жолдарын
табады да,
оларды берілген объектінің __doc__ атрибутының мәні етеді.
Мысал жұмыс
істемейді, бірақ сонда да үлгісін көрсетейік:
class A:
"'Бұл класты құжаттау жолдары.
Ол үш рет біреулік тырнақшаға алынған'"
def test(self):
""" Бұл test әдісін құжаттау"""
pass
print(A.__doc__)
print(A.test.__doc__)
AttributeError: 'А' class has no attribute '__doc__'
Декораторлар
Декоратор дегеніміз – функция немесе кластың тәртібін өзгерту тәсілі. Бұл Python тілінің
ең бір түсініксіз тақырыбы әрі онымен жұмыс істеу де өте күрделі. @staticmethod атты декора-
тормен статикалық әдісте кездестік.
32
def simpledecorator(fn):
def decorate():
print("Орындауға дейін")
print(fn())
ргіпІ("Орындаудан кейін")
return decorate
@simple_decorator
def test1():
return "test1() орындау"
test1()
Нәтижесі:
Орындауға дейін
Test1() орындау
Орындаудан кейін
Генераторлар
Генераторлар дегеніміз – итерацияланатын объектілер, бірак, жалпы жағдайда, оны бір-ақ
рет қолдана аламыз. Себебі, олар мәндердің барлығын жадыда сақтамайды: сұрақ берген кезде
ғана мәнді туындатады.
Yield – дегеніміз return сияқты қолданылатын түйінді сөз. Айырмашылығы – бұл жағдайда
функция генератор орнына мәнді кері қайтарады.
Мысал жұмыс істемейді,
бірақ сонда да
үлгісін көрсетейік:
# Қарапайым генератор
generator = (х * х for х in range(3))
for і in generator:
print(i)
# Yield
def generator():
for i in (1, 2, 3):
yield i
g = generator() # генератор құрамыз
print(g)
for i in g:
print(i)
Нәтижесі:
0
1
4
TypeError: generator () takes 0 positional arguments but more were given
Достарыңызбен бөлісу: