logo

Pythonda statik usullar

Загружено в:

08.08.2023

Скачано:

0

Размер:

23.0009765625 KB
Pythonda statik usullar
Mundarija:
1. Pythonda statik usullar nima
2. Pythonda statik usulni aniqlang
3. Misol: @staticmethod Decorator yordamida statik usul yarating
4. Statik usulning afzalliklari
5. staticmethod() funktsiyasi Pythonda statik usullar nima
Statik usul, yakka holda vazifani bajaradigan umumiy yordamchi usuldir . Python-
dagi statik usullar Java yoki C++ da topilganlarga o'xshaydi.
Statik usul sinf ob'ektiga emas, balki sinfga bog'langan . Shuning uchun biz
uni sinf nomidan foydalanib chaqirishimiz mumkin.
Statik   usul   sinf   va   misol   o'zgaruvchilarigaself   kirish   huquqiga   ega   emas,
chunki u va kabi yashirin birinchi argumentni olmaydi cls. Shuning uchun u ob'ekt
yoki sinf holatini o'zgartira olmaydi .
Sinf   usulini   sinf     ClassName.method_name()   ob'ekti   yordamida   ham,
foydalanib ham chaqirish mumkin.
class Employee:
    @staticmethod
    def sample(x):
        print('Inside static method', x)
# call static method
Employee.sample(10)
# can be called using object
emp = Employee()
emp.sample(10)
 Yugurish
Pythonda statik usulni aniqlang
Biz   sinfda   yaratgan   har   qanday   usul   avtomatik   ravishda   misol   usuli   sifatida
yaratiladi   .   @staticmethod   Biz   Python-ga   bu   dekorator   yoki     staticmethod()
funktsiyadan foydalangan holda statik usul ekanligini aniq aytishimiz kerak  .
Statik   usullar   sinf   ichida   aniqlanadi   va   u   oddiy   funktsiyani   belgilashga   juda
o'xshaydi  . Statik usulni e'lon qilish uchun ushbu idiomadan foydalaning:
class C:
    @staticmethod
    def f(arg1, arg2, ...): ... Misol: Dekorator yordamida statik usul @staticmethodyaratish
Usulni   statik   usul   qilish   uchun   @staticmethodusul   ta'rifidan   oldin   dekoratorni
qo'shing.
Dekorator   @staticmethod-   bu   usulni   statik   usul   sifatida   e'lon   qilish   uchun
Python-da o'rnatilgan funksiya dekoratori. Bu bizning funktsiyamiz aniqlangandan
keyin baholanadigan ifodadir.
gather_requirement()Ushbu   misolda   biz   loyiha   nomini   qabul   qiladigan   va   ushbu
loyiha doirasida bajarish uchun barcha talablarni qaytaradigan statik usul yaratamiz
Statik usullar usullarning alohida holatidir. Ba'zan siz sinfga tegishli kodni yozasiz,
lekin u ob'ektning o'zidan umuman foydalanmaydi. self  Bu foydali usul va uning
ishlashini  yakunlash uchun  ob'ekt  (parametr)  kerak emas  . Shunday qilib, biz uni
statik   usul   deb   e'lon   qilamiz.   Bundan   tashqari,   biz   uni   sinfning   boshqa   usulidan
chaqirishimiz mumkin.
class Employee(object):
    def __init__(self, name, salary, project_name):
        self.name = name
        self.salary = salary
        self.project_name = project_name
    @staticmethod
    def gather_requirement(project_name):
        if project_name == 'ABC Project':
            requirement = ['task_1', 'task_2', 'task_3']
        else:
            requirement = ['task_1']
        return requirement
    # instance method
    def work(self):
        # call static method from instance method
        requirement = self.gather_requirement(self.project_name)         for task in requirement:
            print('Completed', task)
emp = Employee('Kelly', 12000, 'ABC Project')
emp.work()
 Yugurish
Chiqish :
Tugallangan vazifa_1
Bajarildi vazifa_2
Bajarildi vazifa_3
Statik usulning afzalliklari
Bu erda statik usul quyidagi afzalliklarga ega.
Kamroq   xotirani   iste'mol   qilish   :   misol   usullari   ham   ob'ektdir   va   ularni
yaratish   qimmatga   tushadi.   Statik   usulga   ega   bo'lish   buni   oldini   oladi.   Faraz
qilaylik, sizda o'nta xodim ob'ekti bor va agar siz misol usuligather_requirement()
sifatida   yaratsangiz,   Python   ushbu   usulning   o'n   nusxasini   (har   bir   ob'ekt   uchun
alohida) yaratishi kerak, bu esa ko'proq xotirani sarflaydi. Boshqa tomondan, statik
usul har bir sinfda faqat bitta nusxaga ega.
kelly = Employee('Kelly', 12000, 'ABC Project')
jessa = Employee('Jessa', 7000, 'XYZ Project')
# false
# because seperate copy of instance method is created for each object
print(kelly.work is jessa.work)
# True
# because only one copy is created
# kelly and jess objects share the same methods
print(kelly.gather_requirement is jessa.gather_requirement)
# True
print(kelly.gather_requirement is Employee.gather_requirement)
Yordamchi   dastur   funktsiyalarini   yozish   uchun   :   Statik   usullar   cheklangan
foydalanishga ega, chunki ular ob'ekt atributlariga ( misol o'zgaruvchilari ) va sinf atributlariga   (   sinf   o'zgaruvchilari   )   kirish   imkoniga   ega   emaslar.   Biroq,   ular   bir
turni   boshqasiga   o'tkazish   kabi   yordamchi   dasturlarda   foydali   bo'lishi   mumkin.
Taqdim etilgan parametrlar ishlash uchun etarli.
O'qish   qobiliyati   :   @staticmethodUsulning   yuqori   qismidagi   ni   ko'rib,   biz   usul
ob'ekt holatiga yoki sinf holatiga bog'liq emasligini bilamiz.
staticmethod()Funktsiya _
Ba'zi   kodlar   statik   usulni   belgilashning   eski   usulidan   foydalanishi   mumkin
staticmethod(), bu esa dekorator emas, balki funksiya sifatida ishlatilishi mumkin.
Agar siz Python-ning eski  versiyalarini (2.2 va 2.3) qo'llab-quvvatlashingiz kerak
bo'lsa,   faqat   staticmethod()statik   usulni   aniqlash   uchun   funktsiyadan
foydalanishingiz   kerak.   @staticmethodAks   holda,   dekorativdan   foydalanish
tavsiya etiladi .
Sintaksis :
staticmethod(function)
function: Bu statik usul sifatida aylantirmoqchi bo'lgan usulning nomi.
U aylantirilgan statik usulni qaytaradi.
Misol :
class Employee:
    def sample(x):
        print('Inside static method', x)
# convert to static method
Employee.sample = staticmethod(Employee.sample)
# call static method
Employee.sample(10)
 Yugurish
Yondashuv staticmethod()sinf tanasidan funksiyaga havola kerak bo'lganda foydali
bo'ladi va siz misol usuliga avtomatik o'zgartirishdan qochmoqchi bo'lsangiz.
Boshqa usuldan statik usulni chaqiring
Keling, xuddi shu sinfning boshqa statik usulidan statik usulni qanday chaqirishni
ko'rib chiqaylik. Bu erda biz statik usulni sinf usulidan ajratamiz. class Test :
    @staticmethod
    def static_method_1():
        print('static method 1')
    @staticmethod
    def static_method_2() :
        Test.static_method_1()
    @classmethod
    def class_method_1(cls) :
        cls.static_method_2()
# call class method
Test.class_method_1()
 Yugurish
Chiqish :
statik usul 1
Ma'lumotnoma : Statik usul hujjatlari
Taqdim etilgan: Python , Python ob'ektga yo'naltirilgan dasturlash (OOP)
Bu sahifani foydali deb topdingizmi? Bu haqda boshqalarga xabar bering. Ulashish
menga bepul Python resurslarini yaratishda davom etishimga yordam beradi.
TvitF ulushulushdaP Pin
Vishal haqida
PYnative.com   asoschisi   Men   Python   dasturchisiman   va   ishlab   chiquvchilarga
yordam berish uchun maqolalar yozishni yaxshi ko'raman. Meni Twitterda kuzatib
boring . Kelajakdagi Python urinishlaringiz uchun eng yaxshisi!
Tegishli darslik mavzulari:
Python Python ob'ektga yo'naltirilgan dasturlash (OOP)
Python mashqlari va viktorinalari
Bepul   kodlash   mashqlari   va   viktorinalar   Python   asoslari,   ma’lumotlar   tuzilishi,
ma’lumotlar tahlili va boshqalarni qamrab oladi. 15+ Mavzuga oid mashqlar va viktorinalar
Har bir mashq 10 ta savoldan iborat
Har bir testda 12-15 MCQ mavjud
Mashqlar Viktorinalar
Izohlar
- deydi Hyuk Cho
2021-YIL 15-OKTABR, SOAT 11:19
Vishal,
Bu   shunchaki   statik   usullarning   asosiy   qo'llanilishini   foydali   usullar   sifatida
ta'kidlash,   shuningdek,   ba'zi   o'quvchilarning   har   qanday   tushunmovchiliklaridan
xalos bo'lish taklifidir.
HOZIRGI:
@staticmethod
    def gather_requirement(project_name):
        requirement = ['task_1', 'task_2', 'task_3']
        return requirement
“to'plash_talab(loyiha_nomi)”   asl   statik   usuli   “loyiha_nomi”   parametridan
foydalanmagani uchun parametr shart emas. Shuning uchun, agar u quyida tavsiya
etilgan usulning tanasida qo'llanilsa, yaxshiroq bo'lishi mumkin.
TAVSIYA ETILGAN:
@staticmethod
    def gather_requirement(project_number):
        if project_number == 1:
            requirement = ['task_1']
        else: 
            requirement = ['task_1', 'task_2', 'task_3']
        return requirement (Izoh) Statik usul  “Python Class va Static Method vs. Instance Method” da qayta
ishlatilganligi sababli, sahifalar ham to g ri yangilangan bo lsa yaxshi bo lardi.ʻ ʻ ʻ ʻ

Pythonda statik usullar Mundarija: 1. Pythonda statik usullar nima 2. Pythonda statik usulni aniqlang 3. Misol: @staticmethod Decorator yordamida statik usul yarating 4. Statik usulning afzalliklari 5. staticmethod() funktsiyasi

Pythonda statik usullar nima Statik usul, yakka holda vazifani bajaradigan umumiy yordamchi usuldir . Python- dagi statik usullar Java yoki C++ da topilganlarga o'xshaydi. Statik usul sinf ob'ektiga emas, balki sinfga bog'langan . Shuning uchun biz uni sinf nomidan foydalanib chaqirishimiz mumkin. Statik usul sinf va misol o'zgaruvchilarigaself kirish huquqiga ega emas, chunki u va kabi yashirin birinchi argumentni olmaydi cls. Shuning uchun u ob'ekt yoki sinf holatini o'zgartira olmaydi . Sinf usulini sinf ClassName.method_name() ob'ekti yordamida ham, foydalanib ham chaqirish mumkin. class Employee: @staticmethod def sample(x): print('Inside static method', x) # call static method Employee.sample(10) # can be called using object emp = Employee() emp.sample(10) Yugurish Pythonda statik usulni aniqlang Biz sinfda yaratgan har qanday usul avtomatik ravishda misol usuli sifatida yaratiladi . @staticmethod Biz Python-ga bu dekorator yoki staticmethod() funktsiyadan foydalangan holda statik usul ekanligini aniq aytishimiz kerak . Statik usullar sinf ichida aniqlanadi va u oddiy funktsiyani belgilashga juda o'xshaydi . Statik usulni e'lon qilish uchun ushbu idiomadan foydalaning: class C: @staticmethod def f(arg1, arg2, ...): ...

Misol: Dekorator yordamida statik usul @staticmethodyaratish Usulni statik usul qilish uchun @staticmethodusul ta'rifidan oldin dekoratorni qo'shing. Dekorator @staticmethod- bu usulni statik usul sifatida e'lon qilish uchun Python-da o'rnatilgan funksiya dekoratori. Bu bizning funktsiyamiz aniqlangandan keyin baholanadigan ifodadir. gather_requirement()Ushbu misolda biz loyiha nomini qabul qiladigan va ushbu loyiha doirasida bajarish uchun barcha talablarni qaytaradigan statik usul yaratamiz Statik usullar usullarning alohida holatidir. Ba'zan siz sinfga tegishli kodni yozasiz, lekin u ob'ektning o'zidan umuman foydalanmaydi. self Bu foydali usul va uning ishlashini yakunlash uchun ob'ekt (parametr) kerak emas . Shunday qilib, biz uni statik usul deb e'lon qilamiz. Bundan tashqari, biz uni sinfning boshqa usulidan chaqirishimiz mumkin. class Employee(object): def __init__(self, name, salary, project_name): self.name = name self.salary = salary self.project_name = project_name @staticmethod def gather_requirement(project_name): if project_name == 'ABC Project': requirement = ['task_1', 'task_2', 'task_3'] else: requirement = ['task_1'] return requirement # instance method def work(self): # call static method from instance method requirement = self.gather_requirement(self.project_name)

for task in requirement: print('Completed', task) emp = Employee('Kelly', 12000, 'ABC Project') emp.work() Yugurish Chiqish : Tugallangan vazifa_1 Bajarildi vazifa_2 Bajarildi vazifa_3 Statik usulning afzalliklari Bu erda statik usul quyidagi afzalliklarga ega. Kamroq xotirani iste'mol qilish : misol usullari ham ob'ektdir va ularni yaratish qimmatga tushadi. Statik usulga ega bo'lish buni oldini oladi. Faraz qilaylik, sizda o'nta xodim ob'ekti bor va agar siz misol usuligather_requirement() sifatida yaratsangiz, Python ushbu usulning o'n nusxasini (har bir ob'ekt uchun alohida) yaratishi kerak, bu esa ko'proq xotirani sarflaydi. Boshqa tomondan, statik usul har bir sinfda faqat bitta nusxaga ega. kelly = Employee('Kelly', 12000, 'ABC Project') jessa = Employee('Jessa', 7000, 'XYZ Project') # false # because seperate copy of instance method is created for each object print(kelly.work is jessa.work) # True # because only one copy is created # kelly and jess objects share the same methods print(kelly.gather_requirement is jessa.gather_requirement) # True print(kelly.gather_requirement is Employee.gather_requirement) Yordamchi dastur funktsiyalarini yozish uchun : Statik usullar cheklangan foydalanishga ega, chunki ular ob'ekt atributlariga ( misol o'zgaruvchilari ) va sinf

atributlariga ( sinf o'zgaruvchilari ) kirish imkoniga ega emaslar. Biroq, ular bir turni boshqasiga o'tkazish kabi yordamchi dasturlarda foydali bo'lishi mumkin. Taqdim etilgan parametrlar ishlash uchun etarli. O'qish qobiliyati : @staticmethodUsulning yuqori qismidagi ni ko'rib, biz usul ob'ekt holatiga yoki sinf holatiga bog'liq emasligini bilamiz. staticmethod()Funktsiya _ Ba'zi kodlar statik usulni belgilashning eski usulidan foydalanishi mumkin staticmethod(), bu esa dekorator emas, balki funksiya sifatida ishlatilishi mumkin. Agar siz Python-ning eski versiyalarini (2.2 va 2.3) qo'llab-quvvatlashingiz kerak bo'lsa, faqat staticmethod()statik usulni aniqlash uchun funktsiyadan foydalanishingiz kerak. @staticmethodAks holda, dekorativdan foydalanish tavsiya etiladi . Sintaksis : staticmethod(function) function: Bu statik usul sifatida aylantirmoqchi bo'lgan usulning nomi. U aylantirilgan statik usulni qaytaradi. Misol : class Employee: def sample(x): print('Inside static method', x) # convert to static method Employee.sample = staticmethod(Employee.sample) # call static method Employee.sample(10) Yugurish Yondashuv staticmethod()sinf tanasidan funksiyaga havola kerak bo'lganda foydali bo'ladi va siz misol usuliga avtomatik o'zgartirishdan qochmoqchi bo'lsangiz. Boshqa usuldan statik usulni chaqiring Keling, xuddi shu sinfning boshqa statik usulidan statik usulni qanday chaqirishni ko'rib chiqaylik. Bu erda biz statik usulni sinf usulidan ajratamiz.