Junior — Middle
Оё метавонед шарҳи кунед, ки намунаи 'декоратор' дар барномасозӣ чӣ маъно дорад ва чӣ гуна истифода мешавад?
sobes.tech AI
Ҷавоб аз AI
Намудури "декоратор" дар барномасозӣ имкон медиҳад, ки масъулиятҳои навро ба объектҳо динамикӣ илова кунем, онҳоро дар объектҳои дигар-декораторҳо пӯшонем, бе тағир додани синфи аслӣ.
Дар Python, декораторҳо одатан ҳамчун функсияҳо ё синфҳо татбиқ мешаванд, ки объект (ё функсия) мегиранд ва пӯшиш бо рафторҳои иловагӣ бармегардонанд.
Масалан, истифодаи декоратор барои функсия:
def decorator(func):
def wrapper(*args, **kwargs):
print("Пеш аз даъвати функсия")
result = func(*args, **kwargs)
print("Пас аз даъвати функсия")
return result
return wrapper
@decorator
def say_hello():
print("Салом!")
say_hello()
Ин ҷо, say_hello дар wrapper пӯшонида шудааст, ки паёмҳоро пеш ва баъд аз даъват нишон медиҳад.
Дар муносибати объектӣ, декоратор як синф аст, ки истинод ба объекте бо интерфейси ҳамонро дорад ва рафторро васеъ мекунад, масалан:
class Component:
def operation(self):
pass
class ConcreteComponent(Component):
def operation(self):
print("Асосии амал")
class Decorator(Component):
def __init__(self, component):
self._component = component
def operation(self):
print("Рафтори иловагӣ пеш" )
self._component.operation()
print("Рафтори иловагӣ пас")
component = ConcreteComponent()
decorated = Decorator(component)
decorated.operation()
Инчунин, декоратор имкон медиҳад, ки функсионалиятро бе тағир додани коди манбаъ васеъ кунем.