പൈത്തണിൻ്റെ നൂതന ആശയങ്ങളിലേക്ക് ആഴ്ന്നിറങ്ങുന്നു
പൈത്തണിലെ മെറ്റാക്ലാസ്സുകൾ കൂടുതൽ നിഗൂഢമായ സവിശേഷതകളിൽ ഒന്നായി നിലകൊള്ളുന്നു, പലപ്പോഴും പല ഡെവലപ്പർമാരുടെയും മിസ്റ്റിക് പ്രഭാവലയത്തിൽ മറഞ്ഞിരിക്കുന്നു. ഈ അണ്ടർ-ദി-ഹുഡ് മെക്കാനിസങ്ങൾ പൈത്തണിൻ്റെ ഒബ്ജക്റ്റ്-ഓറിയൻ്റഡ് പ്രോഗ്രാമിംഗ് കഴിവുകളിലേക്ക് ആഴത്തിലുള്ള ഡൈവ് വാഗ്ദാനം ചെയ്യുന്നു, ഇത് ക്ലാസ് സൃഷ്ടിയിൽ കൂടുതൽ നിയന്ത്രണം അനുവദിക്കുന്നു. മെറ്റാക്ലാസ്സുകൾ മനസ്സിലാക്കുന്നത് പൈത്തണിൻ്റെ ക്ലാസ് ഘടനയുടെ അടിത്തറയെ രൂപപ്പെടുത്തുന്ന മറഞ്ഞിരിക്കുന്ന ഗിയറുകളും ലിവറുകളും കണ്ടെത്തുന്നതിന് തുല്യമാണ്. അതുപോലെ, കൂടുതൽ പരമ്പരാഗത മാർഗങ്ങളിലൂടെ നേടാൻ പ്രയാസമുള്ള ചലനാത്മകതയും വഴക്കവും പ്രാപ്തമാക്കിക്കൊണ്ട്, അത്യാധുനിക രീതികളിൽ ക്ലാസ് പെരുമാറ്റം ഇഷ്ടാനുസൃതമാക്കാൻ ആഗ്രഹിക്കുന്നവർക്ക് അവർ ശക്തമായ ഒരു ഉപകരണം നൽകുന്നു.
മെറ്റാക്ലാസ്സുകളിലേക്കുള്ള ഈ പര്യവേക്ഷണം അവരുടെ ആശയത്തെ അപകീർത്തിപ്പെടുത്തുക മാത്രമല്ല, അവയുടെ പ്രായോഗിക പ്രയോഗങ്ങൾ പ്രദർശിപ്പിക്കുകയും ചെയ്യും. ക്ലാസുകളുടെ സൃഷ്ടിയെ മെറ്റാക്ലാസ്സുകൾ എങ്ങനെ കൈകാര്യം ചെയ്യുന്നുവെന്ന് പരിശോധിക്കുന്നതിലൂടെ, പൈത്തണിനുള്ളിലെ വിപുലമായ പ്രോഗ്രാമിംഗ് മാതൃകകളെ സ്വാധീനിക്കാനുള്ള അവയുടെ കഴിവ് ഞങ്ങൾ കണ്ടെത്തുന്നു. ഒരു വലിയ കോഡ്ബേസിലുടനീളം കോഡിംഗ് മാനദണ്ഡങ്ങൾ നടപ്പിലാക്കുന്നത് മുതൽ സിംഗിൾടൺ പാറ്റേണുകൾ അല്ലെങ്കിൽ മെറ്റാ-പ്രോഗ്രാമിംഗ് ടെക്നിക്കുകൾ നടപ്പിലാക്കുന്നത് വരെ, മെറ്റാക്ലാസ്സുകൾ സാധ്യതകളുടെ ഒരു മേഖല തുറക്കുന്നു. ഭാഷയുടെ ഒബ്ജക്റ്റ്-ഓറിയൻ്റഡ് പ്രോഗ്രാമിംഗ് ഫീച്ചറുകളുടെ മുഴുവൻ സ്പെക്ട്രവും പ്രയോജനപ്പെടുത്താൻ ശ്രമിക്കുന്ന നൂതന പൈത്തൺ പ്രോഗ്രാമർമാർക്ക് അവരുടെ ധാരണ അത്യന്താപേക്ഷിതമാണ്.
കമാൻഡ് | വിവരണം |
---|---|
class MetaClass(type): | പൈത്തണിൻ്റെ ബിൽറ്റ്-ഇൻ മെറ്റാക്ലാസ് ആയ 'ടൈപ്പ്' എന്നതിൽ നിന്ന് ഉരുത്തിരിഞ്ഞ മെറ്റാക്ലാസ് നിർവചിക്കുന്നു. |
__new__ | ഒരു പുതിയ ഒബ്ജക്റ്റ് സൃഷ്ടിക്കുന്നതിനും തിരികെ നൽകുന്നതിനുമുള്ള രീതി. ക്ലാസ് സൃഷ്ടിക്കൽ നിയന്ത്രിക്കാൻ മെറ്റാക്ലാസ്സുകളിൽ ഉപയോഗിക്കുന്നു. |
__init__ | പുതുതായി സൃഷ്ടിച്ച ഒബ്ജക്റ്റ് ആരംഭിക്കുന്നതിനുള്ള രീതി. ക്ലാസ് ഇനീഷ്യലൈസേഷൻ ഇഷ്ടാനുസൃതമാക്കാൻ മെറ്റാക്ലാസ്സുകളിൽ ഉപയോഗിക്കുന്നു. |
പൈത്തണിലെ മെറ്റാക്ലാസ്സുകൾ മനസ്സിലാക്കുന്നു
ക്ലാസ് സൃഷ്ടിയുടെ ഇഷ്ടാനുസൃതമാക്കാൻ അനുവദിക്കുന്ന ആഴമേറിയതും ശക്തവുമായ സവിശേഷതയാണ് പൈത്തണിലെ മെറ്റാക്ലാസ്സുകൾ. അവ അടിസ്ഥാനപരമായി ക്ലാസുകളുടെ ക്ലാസുകളാണ്, ആ ക്ലാസിൻ്റെ ഉദാഹരണങ്ങളേക്കാൾ ഒരു ക്ലാസ് എങ്ങനെ പ്രവർത്തിക്കുന്നുവെന്ന് നിർവചിക്കുന്നു. ഇത് അമൂർത്തമായി തോന്നാം, പക്ഷേ പ്രകടിപ്പിക്കാൻ ബുദ്ധിമുട്ടുള്ളതോ അസാധ്യമോ ആയ പാറ്റേണുകൾ നടപ്പിലാക്കാൻ മെറ്റാക്ലാസ്സുകൾ ഡെവലപ്പർമാരെ പ്രാപ്തരാക്കുന്നു. ഉദാഹരണത്തിന്, ക്ലാസുകൾ സൃഷ്ടിക്കുമ്പോൾ സ്വയമേവ രജിസ്റ്റർ ചെയ്യുന്നതിനോ ക്ലാസ് അംഗങ്ങളിൽ ചില പ്രോപ്പർട്ടികൾ നടപ്പിലാക്കുന്നതിനോ ക്ലാസ് ആട്രിബ്യൂട്ടുകൾ ഡൈനാമിക്കായി പരിഷ്ക്കരിക്കുന്നതിനോ അവ ഉപയോഗിക്കാനാകും. പൈത്തണിൻ്റെ സ്പഷ്ടമായ തത്ത്വചിന്തയിൽ നിന്നാണ് മെറ്റാക്ലാസ്സുകൾ എന്ന ആശയം ഉടലെടുത്തത്, ഇത് സങ്കീർണ്ണമാണെങ്കിലും ഭാഷയുടെ മെക്കാനിക്സിൽ വ്യക്തമായ നിയന്ത്രണം നൽകുന്ന ഉപകരണങ്ങൾ നൽകുന്നു.
മെറ്റാക്ലാസ്സുകളുടെ അടിസ്ഥാന ഉപയോഗങ്ങളിലൊന്ന് വഴക്കമുള്ളതും അവബോധജന്യവുമായ API-കൾ സൃഷ്ടിക്കുക എന്നതാണ്. ക്ലാസ് സൃഷ്ടിക്കൽ പ്രക്രിയ കൈകാര്യം ചെയ്യുന്നതിലൂടെ, ആവർത്തിച്ചുള്ള ബോയിലർപ്ലേറ്റ് കോഡിൻ്റെ ആവശ്യമില്ലാതെ ക്ലാസുകൾ നിർദ്ദിഷ്ട ഇൻ്റർഫേസുകളുമായി പൊരുത്തപ്പെടുന്നുണ്ടെന്ന് അല്ലെങ്കിൽ പ്രത്യേക അടിസ്ഥാന ക്ലാസുകളിൽ നിന്ന് അവകാശം നേടുന്നുവെന്ന് ഡവലപ്പർമാർക്ക് ഉറപ്പാക്കാൻ കഴിയും. വലിയ ചട്ടക്കൂടുകളിലോ ഗ്രന്ഥശാലകളിലോ ഇത് പ്രത്യേകിച്ചും ഉപയോഗപ്രദമാണ്, അവിടെ സ്ഥിരതയും ഒരു പൊതു ഘടനയോടുള്ള അനുസരണവും പ്രധാനമാണ്. മാത്രമല്ല, പൈത്തണിനുള്ളിൽ ഡൊമെയ്ൻ-നിർദ്ദിഷ്ട ഭാഷകൾ (ഡിഎസ്എൽ) സൃഷ്ടിക്കാൻ മെറ്റാക്ലാസ്സുകൾ അനുവദിക്കുന്നു, ഇത് സങ്കീർണ്ണമായ അവസ്ഥകളോ കോൺഫിഗറേഷനുകളോ സംക്ഷിപ്തവും വായിക്കാവുന്നതുമായ രീതിയിൽ പ്രകടിപ്പിക്കാൻ സഹായിക്കുന്നു. മെറ്റാക്ലാസ്സുകൾ മനസ്സിലാക്കുന്നത് പൈത്തൺ പ്രോഗ്രാമിംഗിൽ ഒരു പുതിയ മാനം തുറക്കുന്നു, ഭാഷയുടെ ആന്തരിക പ്രവർത്തനങ്ങളിലേക്കുള്ള ഒരു ദർശനം നൽകുകയും വിപുലമായ വാസ്തുവിദ്യാ പ്രശ്നങ്ങൾ പരിഹരിക്കുന്നതിനുള്ള ഉപകരണങ്ങൾ നൽകുകയും ചെയ്യുന്നു.
ഒരു ലളിതമായ മെറ്റാക്ലാസ് നിർവചിക്കുന്നു
പൈത്തൺ പ്രോഗ്രാമിംഗ് ഭാഷ
class MetaClass(type):
def __new__(cls, name, bases, dct):
x = super().__new__(cls, name, bases, dct)
x.attribute = 100
return x
class MyClass(metaclass=MetaClass):
pass
print(MyClass.attribute)
പൈത്തണിലെ മെറ്റാക്ലാസ്സുകളുടെ ആഴം പര്യവേക്ഷണം ചെയ്യുന്നു
പൈത്തണിലെ മെറ്റാക്ലാസ്സുകൾ 'ക്ലാസ് ഓഫ് എ ക്ലാസ്' ആയി വർത്തിക്കുന്നു, ഇത് ക്ലാസ് സൃഷ്ടിക്കൽ പ്രക്രിയയെ തടസ്സപ്പെടുത്താൻ ഡവലപ്പർമാരെ പ്രാപ്തരാക്കുന്നു. ദൈനംദിന പ്രോഗ്രാമിംഗിൽ ഈ സവിശേഷത സാധാരണയായി ഉപയോഗിക്കാറില്ല, എന്നാൽ വിപുലമായതും ചട്ടക്കൂട്-തലത്തിലുള്ളതുമായ കോഡുകളിൽ ഇത് സുപ്രധാനമാണ്, അവിടെ ഇത് ക്ലാസ് പെരുമാറ്റ കസ്റ്റമൈസേഷനുള്ള ഒരു സംവിധാനം നൽകുന്നു. സിംഗിൾടൺ, ഫാക്ടറി എന്നിവയും മറ്റും പോലുള്ള പാറ്റേണുകൾ നടപ്പിലാക്കാൻ അനുവദിക്കുന്ന തരവും ഉദാഹരണ സൃഷ്ടിയും നിയന്ത്രിക്കാനുള്ള അവരുടെ കഴിവിലാണ് മെറ്റാക്ലാസ്സുകളുടെ പിന്നിലെ മാന്ത്രികത. മെറ്റാക്ലാസ്സുകൾ ഉപയോഗിക്കുന്നതിലൂടെ, ഡവലപ്പർമാർ അവരുടെ നിർവചന സമയത്ത് ക്ലാസുകളുടെ നിർമ്മാണത്തെ സ്വാധീനിക്കാനുള്ള കഴിവ് നേടുന്നു, കോഡിംഗ് കൺവെൻഷനുകൾ നടപ്പിലാക്കുന്നതിനും ആവർത്തിച്ചുള്ള ടാസ്ക്കുകൾ ഓട്ടോമേറ്റ് ചെയ്യുന്നതിനും മെറ്റാ-പ്രോഗ്രാമിംഗ് ടെക്നിക്കുകൾ പ്രയോഗിക്കുന്നതിനുമുള്ള ശക്തമായ ഒരു ഉപകരണം വാഗ്ദാനം ചെയ്യുന്നു.
മെറ്റാക്ലാസ്സുകളുടെ പ്രായോഗിക പ്രയോഗങ്ങൾ ലളിതമായ ക്ലാസ് സൃഷ്ടിയ്ക്കപ്പുറം വ്യാപിക്കുന്നു. അവർക്ക് ക്ലാസ് ആട്രിബ്യൂട്ടുകൾ ചലനാത്മകമായി പരിഷ്ക്കരിക്കാനും ഫംഗ്ഷൻ അസാധുവാക്കലുകൾ നടപ്പിലാക്കാനും വ്യക്തമായ ഉപയോക്തൃ ഇടപെടലില്ലാതെ ക്ലാസുകൾ സ്വയമേവ രജിസ്റ്റർ ചെയ്യാനും കഴിയും. ഈ തലത്തിലുള്ള നിയന്ത്രണം മെറ്റാക്ലാസ്സുകളെ കരുത്തുറ്റതും അളക്കാവുന്നതും പരിപാലിക്കാവുന്നതുമായ കോഡ്ബേസുകൾ വികസിപ്പിക്കുന്നതിനുള്ള ഒരു പ്രധാന സവിശേഷതയാക്കുന്നു. അവയുടെ സങ്കീർണ്ണത ഉണ്ടായിരുന്നിട്ടും, മെറ്റാക്ലാസ്സുകൾ മനസ്സിലാക്കുന്നത് കാര്യക്ഷമവും ഫലപ്രദവുമായ പൈത്തൺ കോഡ് എഴുതാനുള്ള ഒരു ഡവലപ്പറുടെ കഴിവിനെ വളരെയധികം വർദ്ധിപ്പിക്കും, പൈത്തണിൻ്റെ ഒബ്ജക്റ്റ്-ഓറിയൻ്റഡ് പ്രോഗ്രാമിംഗ് കഴിവുകളെക്കുറിച്ചുള്ള അറിവ് വർദ്ധിപ്പിക്കാൻ ആഗ്രഹിക്കുന്നവർക്ക് ഇത് ഒരു മൂല്യവത്തായ ശ്രമമാക്കി മാറ്റുന്നു.
പൈത്തൺ മെറ്റാക്ലാസ്സുകളെ കുറിച്ച് പതിവായി ചോദിക്കുന്ന ചോദ്യങ്ങൾ
- പൈത്തണിലെ മെറ്റാക്ലാസ് എന്താണ്?
- പൈത്തണിലെ ഒരു മെറ്റാക്ലാസ് ക്ലാസുകൾ സൃഷ്ടിക്കാൻ ഉപയോഗിക്കുന്ന ഒരു ക്ലാസാണ്, ഇത് ക്ലാസ് സൃഷ്ടിയുടെ ഇഷ്ടാനുസൃതമാക്കാൻ അനുവദിക്കുന്നു.
- ഒരു മെറ്റാക്ലാസ് എങ്ങനെ നിർവ്വചിക്കും?
- ഒരു മെറ്റാക്ലാസ് നിർവചിക്കുന്നത് 'ടൈപ്പിൽ' നിന്ന് ഇൻഹെറിറ്റാണ്, കൂടാതെ ക്ലാസ് ക്രിയേഷൻ ഇഷ്ടാനുസൃതമാക്കാൻ അതിന് __new__ അല്ലെങ്കിൽ __init__ രീതികൾ അസാധുവാക്കാനാകും.
- എന്തുകൊണ്ടാണ് നിങ്ങൾ ഒരു മെറ്റാക്ലാസ് ഉപയോഗിക്കുന്നത്?
- വിപുലമായ ക്ലാസ് ഇഷ്ടാനുസൃതമാക്കുന്നതിനും കോഡിംഗ് മാനദണ്ഡങ്ങൾ നടപ്പിലാക്കുന്നതിനും സിംഗിൾടൺ പോലുള്ള ഡിസൈൻ പാറ്റേണുകൾ നടപ്പിലാക്കുന്നതിനും മെറ്റാക്ലാസ്സുകൾ ഉപയോഗിക്കുന്നു.
- മെറ്റാക്ലാസ്സുകൾ ഉദാഹരണ രീതികളെ ബാധിക്കുമോ?
- അതെ, ക്ലാസ് ഒബ്ജക്റ്റ് സൃഷ്ടിക്കുമ്പോൾ അത് മാറ്റിക്കൊണ്ട് മെറ്റാക്ലാസ്സുകൾക്ക് ഇൻസ്റ്റൻസ് രീതികൾ പരിഷ്ക്കരിക്കാനോ ചേർക്കാനോ കഴിയും.
- ക്ലാസ് ഡെക്കറേറ്റർമാരിൽ നിന്ന് ഒരു മെറ്റാക്ലാസ് എങ്ങനെ വ്യത്യാസപ്പെട്ടിരിക്കുന്നു?
- രണ്ടിനും ക്ലാസുകൾ പരിഷ്ക്കരിക്കാൻ കഴിയുമെങ്കിലും, മെറ്റാക്ലാസ്സുകൾ കൂടുതൽ ശക്തവും സൃഷ്ടി പ്രക്രിയയെ തന്നെ നിയന്ത്രിക്കാനും കഴിയും, അവ സൃഷ്ടിച്ചതിനുശേഷം ക്ലാസുകൾ പരിഷ്ക്കരിക്കുക മാത്രമല്ല.
- ജനപ്രിയ പൈത്തൺ ചട്ടക്കൂടുകളിൽ മെറ്റാക്ലാസ്സുകൾ ഉപയോഗിക്കുന്നുണ്ടോ?
- അതെ, Django, Flask പോലുള്ള ചട്ടക്കൂടുകൾ മോഡൽ നിർവചനവും റൂട്ട് രജിസ്ട്രേഷനും ഉൾപ്പെടെ വിവിധ ആവശ്യങ്ങൾക്കായി മെറ്റാക്ലാസ്സുകൾ ഉപയോഗിക്കുന്നു.
- പൈത്തണിൽ പ്രാവീണ്യം നേടുന്നതിന് മെറ്റാക്ലാസ്സുകൾ മനസ്സിലാക്കേണ്ടത് ആവശ്യമാണോ?
- മിക്ക പൈത്തൺ പ്രോഗ്രാമിംഗിനും ആവശ്യമില്ലെങ്കിലും, മെറ്റാക്ലാസ്സുകൾ മനസ്സിലാക്കുന്നത് വിപുലമായ പ്രോഗ്രാമിംഗിനും ചട്ടക്കൂട് വികസനത്തിനും പ്രയോജനകരമാണ്.
- പൈത്തണിൽ ഇൻ്റർഫേസുകൾ നടപ്പിലാക്കാൻ മെറ്റാക്ലാസ്സുകൾ ഉപയോഗിക്കാമോ?
- അതെ, ഇൻ്റർഫേസ് സ്വഭാവം അനുകരിക്കുന്ന പ്രത്യേക രീതികൾ നടപ്പിലാക്കാൻ മെറ്റാക്ലാസ്സുകൾക്ക് കഴിയും.
- മെറ്റാക്ലാസ്സുകൾ പാരമ്പര്യവുമായി എങ്ങനെ ഇടപെടുന്നു?
- അടിസ്ഥാന ക്ലാസ് ആട്രിബ്യൂട്ടുകൾ എങ്ങനെ പാരമ്പര്യമായി ലഭിക്കുന്നു അല്ലെങ്കിൽ അസാധുവാക്കപ്പെടുന്നു എന്നതിനെ സ്വാധീനിക്കുന്ന, പാരമ്പര്യ മെക്കാനിസത്തെ നിയന്ത്രിക്കാൻ മെറ്റാക്ലാസ്സുകൾക്ക് കഴിയും.
- മെറ്റാക്ലാസ്സുകൾ ഉപയോഗിക്കുമ്പോൾ ഉണ്ടാകുന്ന പൊതുവായ പോരായ്മകൾ എന്തൊക്കെയാണ്?
- മെറ്റാക്ലാസ്സുകൾ ദുരുപയോഗം ചെയ്യുന്നത് സങ്കീർണ്ണവും ഡീബഗ് ചെയ്യാൻ ബുദ്ധിമുട്ടുള്ളതുമായ കോഡിലേക്ക് നയിച്ചേക്കാം, അതിനാൽ അവ വിവേകത്തോടെ ഉപയോഗിക്കുകയും അവയുടെ സ്വാധീനം മനസ്സിലാക്കുകയും ചെയ്യേണ്ടത് പ്രധാനമാണ്.
പൈത്തണിലെ മെറ്റാക്ലാസ്സുകളെക്കുറിച്ചുള്ള ഞങ്ങളുടെ പര്യവേക്ഷണം അവസാനിപ്പിക്കുമ്പോൾ, പൈത്തണിൻ്റെ ഒബ്ജക്റ്റ്-ഓറിയൻ്റഡ് പ്രോഗ്രാമിംഗ് മാതൃകയുടെ സങ്കീർണ്ണമായ ഒരു വശമാണ് അവ പ്രതിനിധീകരിക്കുന്നതെന്ന് വ്യക്തമാണ്. മെറ്റാക്ലാസ്സുകൾ ഡവലപ്പർമാർക്ക് പരമ്പരാഗത ക്ലാസ് നിർവചനങ്ങൾ കൊണ്ട് മാത്രം സാധ്യമല്ലാത്ത രീതിയിൽ ക്ലാസ് സൃഷ്ടിയെ കൈകാര്യം ചെയ്യുന്നതിനുള്ള ഉപകരണങ്ങൾ നൽകുന്നു. ഈ സവിശേഷത, ദൈനംദിന പ്രോഗ്രാമിംഗിൽ സാധാരണയായി ഉപയോഗിക്കാറില്ലെങ്കിലും, ഉയർന്ന അളവിലുള്ള ഇഷ്ടാനുസൃതമാക്കലും ക്ലാസ് ശ്രേണിയിൽ നിയന്ത്രണവും ആവശ്യമുള്ള സങ്കീർണ്ണമായ ചട്ടക്കൂടുകളും ആപ്ലിക്കേഷനുകളും വികസിപ്പിക്കുന്നതിന് വിലമതിക്കാനാവാത്തതാണ്. മെറ്റാക്ലാസ്സുകൾ മനസ്സിലാക്കുകയും ഫലപ്രദമായി പ്രയോജനപ്പെടുത്തുകയും ചെയ്യുന്നത് പൈത്തൺ ഡെവലപ്പറുടെ കോഡിനെ കാര്യക്ഷമതയുടെയും ചാരുതയുടെയും പുതിയ തലങ്ങളിലേക്ക് ഉയർത്തുകയും കൂടുതൽ പരിപാലിക്കാവുന്നതും അളക്കാവുന്നതും കരുത്തുറ്റതുമായ ആപ്ലിക്കേഷനുകൾ സൃഷ്ടിക്കാൻ പ്രാപ്തമാക്കുകയും ചെയ്യും. എന്നിരുന്നാലും, മെറ്റാക്ലാസ്സുകളെ ജാഗ്രതയോടെ സമീപിക്കേണ്ടത് പ്രധാനമാണ്, കാരണം അവയുടെ ദുരുപയോഗം മനസ്സിലാക്കാനും പരിപാലിക്കാനും ബുദ്ധിമുട്ടുള്ള കോഡിലേക്ക് നയിച്ചേക്കാം. സാരാംശത്തിൽ, മെറ്റാക്ലാസ്സുകൾ പൈത്തണിൻ്റെ വഴക്കത്തിൻ്റെയും ശക്തിയുടെയും തെളിവാണ്, ലളിതമായ സ്ക്രിപ്റ്റിംഗും സങ്കീർണ്ണവും നൂതനവുമായ സോഫ്റ്റ്വെയർ വികസനം നിറവേറ്റാനുള്ള ഭാഷയുടെ കഴിവ് ഉൾക്കൊള്ളുന്നു.