PYTHONπ€π
List Methodsπ: 1οΈβ£ .append() β ro'yxat oxiriga 1 dona element qo'shadi mevalar = ['olma', 'banan', 'qulupnay'] mevalar.append("apelsin") print(mevalar) #output: ['olma', 'banan', 'qulupnay', 'apelsin'] 2οΈβ£ .clear() β o'z nomi bilan listni tozalab yuboradiβ¦
Bilimlarni mustahkamlab olish uchun mashqlar bajarib ko'ring:
https://www.w3schools.com/python/exercise.asp?filename=exercise_lists1
https://www.w3schools.com/python/exercise.asp?filename=exercise_lists1
W3Schools
W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.
Pythonda Tupleπ€:
List va Tuple ning farqlari:
(Bir-biriga solishtirib ketaversak ham takrorlash ham eslab qolishga qulay bo'ladi!)
1οΈβ£. listlar o'zgaruvchilarni o'zgartirish uchun moslashtirilgan, ya'ni ularga elementlarni qo'shish, o'chirish, o'zgartirish mumkin. Bunaqangi, tuplelar o'zgaruvchilarni o'zgartirish uchun moslashtirilmagan, ya'ni ularga o'zgarish kiritish, elementlarni qo'shish, o'chirish yoki o'zgartirish imkonsiz.
βοΈAmmo buning ham iloji bor π:
Tuple ga element qo'shish, o'chirish, o'zgartirish uchun avval uni listga aylantirib olib, keraklisini bajarib olib keyin uni yana tuple ga o'tkazib qo'yamiz:
3οΈβ£. Listni yozishda [] - to'rtburchak qavslardan foydalanar edik, tupleni yaratishda () - oddiy qavslardan foydalanamiz.
4οΈβ£. Ha aytgancha Tuple 1 ta ma'lumot saqlash tartibi sal boshqacha bo'ladi ya'ni"
tuple ichiga 1 ta ma'lumot yozilsa unda so'ng , vergul qo'yiladi, ya'na ma'lumot bor degandek qilib.
6οΈβ£. Qo'llanilish sohasi:
Kutilgan holatda, listlarning yuqori qo'llanishi va o'zgaruvchilik imkoniyati borligi uchun keng tarqalgan o'zgaruvchi turlarini saqlash uchun foydalaniladi. Boshqacha, tuplelar ko'proq xavfsiz va qo'llanishni ta'minlash uchun foydalaniladi.
List va Tuple ning farqlari:
(Bir-biriga solishtirib ketaversak ham takrorlash ham eslab qolishga qulay bo'ladi!)
1οΈβ£. listlar o'zgaruvchilarni o'zgartirish uchun moslashtirilgan, ya'ni ularga elementlarni qo'shish, o'chirish, o'zgartirish mumkin. Bunaqangi, tuplelar o'zgaruvchilarni o'zgartirish uchun moslashtirilmagan, ya'ni ularga o'zgarish kiritish, elementlarni qo'shish, o'chirish yoki o'zgartirish imkonsiz.
βοΈAmmo buning ham iloji bor π:
Tuple ga element qo'shish, o'chirish, o'zgartirish uchun avval uni listga aylantirib olib, keraklisini bajarib olib keyin uni yana tuple ga o'tkazib qo'yamiz:
thistuple = ("apple", "banana", "cherry")
y = list(thistuple)
y.append("orange")
thistuple = tuple(y)
print(thistuple) #output ("apple", "banana", "cherry", "orange")thistuple = ("apple", "banana", "cherry")
y = list(thistuple)
y.remove("apple")
thistuple = tuple(y)
print(thistuple) #output ("banana", "cherry")2οΈβ£. Tupleni tuplega qo'shish:
thistuple = ("apple", "banana", "cherry")
y = ("orange",)
thistuple += y
### thistuple += y bu ifoda thistuple = thistuple + y bilan bir xil
print(thistuple) #output ("apple", "banana", "cherry", "orange")
3οΈβ£. Listni yozishda [] - to'rtburchak qavslardan foydalanar edik, tupleni yaratishda () - oddiy qavslardan foydalanamiz.
4οΈβ£. Ha aytgancha Tuple 1 ta ma'lumot saqlash tartibi sal boshqacha bo'ladi ya'ni"
thistuple = ("apple",)tuple ichiga 1 ta ma'lumot yozilsa unda so'ng , vergul qo'yiladi, ya'na ma'lumot bor degandek qilib.
6οΈβ£. Qo'llanilish sohasi:
Kutilgan holatda, listlarning yuqori qo'llanishi va o'zgaruvchilik imkoniyati borligi uchun keng tarqalgan o'zgaruvchi turlarini saqlash uchun foydalaniladi. Boshqacha, tuplelar ko'proq xavfsiz va qo'llanishni ta'minlash uchun foydalaniladi.
π1
Tuple Methodsπ:
Tuple da atiga 2 ta method bor:
1οΈβ£ .count(qiymat) - listdagi bilan bir xil, ichiga tuple ichidagi elementlardan birini bersangiz necha marta takrorlanganini aniqlab beradi.
2οΈβ£ .index(qiymat) - listdagi bilan bir xil, ichiga tuple ichidagi elementlardan birini bersangiz, o'sha elementning indeksini ya'ni o'rnini aniqlab beradi.
Dangasalarga mazza bo'ldiya π
Tuple da atiga 2 ta method bor:
1οΈβ£ .count(qiymat) - listdagi bilan bir xil, ichiga tuple ichidagi elementlardan birini bersangiz necha marta takrorlanganini aniqlab beradi.
thistuple = (1, 3, 7, 8, 7, 5, 4, 6, 8, 5)
x = thistuple.count(5)
print(x) #output 2
2οΈβ£ .index(qiymat) - listdagi bilan bir xil, ichiga tuple ichidagi elementlardan birini bersangiz, o'sha elementning indeksini ya'ni o'rnini aniqlab beradi.
thistuple = (1, 3, 7, 8, 7, 5, 4, 6, 8, 5)
### (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
x = thistuple.index(8)
print(x) #output 3
Dangasalarga mazza bo'ldiya π
PYTHONπ€π
Tuple Methodsπ: Tuple da atiga 2 ta method bor: 1οΈβ£ .count(qiymat) - listdagi bilan bir xil, ichiga tuple ichidagi elementlardan birini bersangiz necha marta takrorlanganini aniqlab beradi. thistuple = (1, 3, 7, 8, 7, 5, 4, 6, 8, 5) x = thistuple.count(5)β¦
Bilimlarni mustahkamlash uchun mashqlar bajarib ko'rishingizni tavsiya qilaman:
https://www.w3schools.com/python/python_tuples_exercises.asp
https://www.w3schools.com/python/python_tuples_exercises.asp
W3Schools
W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.
Pythonda Set π€:
1οΈβ£. Set - tartibsiz, o'zgarmas, indekslanmagan to'plamdir.
1. Tartibsiz - set print qilinganda aslidan har safar farq qiladi
2. O'zgarmas - * Eslatma: set elementlarini o'zgartirish mumkin emas, lekin elementlarni olib tashlashingiz va yangi elementlar qo'shishingiz mumkin.
3. Indekslanmagan - har safar elementlar o'rni almashgandan keyin indeksga ega bo'lmaydi.
2οΈβ£. Dublikatlarga ruxsat berilmagan.
Ya'ni set to'plam ichida ikkita bir xil element yozsangiz ham bittasini oladi va bittasini ko'rsatadi.
3οΈβ£. True va 1 hamda False va 0 ham bir xil element hisoblanadi shuning uchun yuqoridagi qoidaga asosan, Trua va 1 bitta set to'plamda kelib qolsa True qoladi, False va 0 bo'lsa, False qoladi set to'plam ichida.
4οΈβ£. len() methodi orqali set to'plam uzunligini aniqlash mumkin:
5οΈβ£. set() konstruktori yordamida boshqa turdagi massivlarni (to'plamlarni) set massiviga o'zgartiriladi:
1οΈβ£. Set - tartibsiz, o'zgarmas, indekslanmagan to'plamdir.
1. Tartibsiz - set print qilinganda aslidan har safar farq qiladi
fruits = {"apple", "banana", "cherry"}
print(fruits) #output {'cherry', 'apple', 'banana'}, {'cherry', 'banana', 'apple'}, etc.2. O'zgarmas - * Eslatma: set elementlarini o'zgartirish mumkin emas, lekin elementlarni olib tashlashingiz va yangi elementlar qo'shishingiz mumkin.
3. Indekslanmagan - har safar elementlar o'rni almashgandan keyin indeksga ega bo'lmaydi.
2οΈβ£. Dublikatlarga ruxsat berilmagan.
Ya'ni set to'plam ichida ikkita bir xil element yozsangiz ham bittasini oladi va bittasini ko'rsatadi.
fruits = {"apple", "banana", "cherry", "apple"}
print(fruits) #output {'cherry', 'apple', 'banana'}, {'cherry', 'banana', 'apple'}, etc.3οΈβ£. True va 1 hamda False va 0 ham bir xil element hisoblanadi shuning uchun yuqoridagi qoidaga asosan, Trua va 1 bitta set to'plamda kelib qolsa True qoladi, False va 0 bo'lsa, False qoladi set to'plam ichida.
thisset = {"apple", "banana", "cherry", True, 1, 2}
print(thisset) #output {True, 2, 'banana', 'cherry', 'apple'}4οΈβ£. len() methodi orqali set to'plam uzunligini aniqlash mumkin:
thisset = {"apple", "banana", "cherry"}
print(len(thisset)) #output 35οΈβ£. set() konstruktori yordamida boshqa turdagi massivlarni (to'plamlarni) set massiviga o'zgartiriladi:
thisset = set(("apple", "banana", "cherry"))
print(thisset) #output {'banana', 'apple', 'cherry'}, etc.π₯1
Set Methodsπ:
1οΈβ£. add() - methodi orqali set to'plamga bitta element qo'shish mumkin.
2οΈβ£. clear() - methodi orqali to'plamdagi barcha elementlar o'chiriladi.
3οΈβ£. copy() - methodi orqali to'plamdan nusxa olaniladi
4οΈβ£. pop() - methodi set oxiridagi bitta elementni qirqib oladi.
βοΈpop() - har safar har xil element qirqib oladi.
5οΈβ£. remove() - methodi set ichidan ayni bir elementni qirqib olish uchun ishlatiladi.
6οΈβ£. update() - methodi bir setga boshqa bir setni qo'shish uchun ishlatiladi.
Bular asosiylari. Boshqa methodalari ham mavjud.
#set #methods
1οΈβ£. add() - methodi orqali set to'plamga bitta element qo'shish mumkin.
thisset = {"apple", "banana", "cherry"}
thisset.add("orange")
print(thisset)
#output {'banana', 'apple', 'cherry', 'orange'}2οΈβ£. clear() - methodi orqali to'plamdagi barcha elementlar o'chiriladi.
thisset = {"apple", "banana", "cherry"}
thisset.clear()
print(thisset) #output set()3οΈβ£. copy() - methodi orqali to'plamdan nusxa olaniladi
fruits = {"apple", "banana", "cherry"}
x = fruits.copy()
print(x) #output {'apple', 'cherry', 'banana'}4οΈβ£. pop() - methodi set oxiridagi bitta elementni qirqib oladi.
fruits = {"apple", "banana", "cherry"}
fruits.pop()
print(fruits) #output {'apple', 'cherry'}, etc.βοΈpop() - har safar har xil element qirqib oladi.
5οΈβ£. remove() - methodi set ichidan ayni bir elementni qirqib olish uchun ishlatiladi.
fruits = {"apple", "banana", "cherry"}
fruits.remove("banana")
print(fruits) #output {'apple', 'cherry'}6οΈβ£. update() - methodi bir setga boshqa bir setni qo'shish uchun ishlatiladi.
x = {"apple", "banana", "cherry"}
y = {"google", "microsoft", "apple"}
x.update(y)
print(x)
#output {'banana', 'apple', 'google', 'microsoft', 'cherry'}Bular asosiylari. Boshqa methodalari ham mavjud.
#set #methods
W3Schools
W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.
Python Dictionary (Lug'atlar) π€:
1οΈβ£. Lug'atlar ma'lumotlar qiymatlarini kalit: qiymat juftlarida saqlash uchun ishlatiladi. Hamda {} qavslar orqali yasaladi.
2οΈβ£. Lug'at ob'ektlari tartiblangan
Ya'ni lug'at elementlari kalit: qiymat juftliklarida taqdim etiladi va kalit nomidan foydalanib unga biriktirilgan qiymatni olish mumkin.
3οΈβ£. Lug'atlar o'zgaruvchan
Ya'ni lug'at yaratilgandan so'ng elementlarni o'zgartirishimiz, qo'shishimiz yoki olib tashlashimiz mumkin.
4οΈβ£. Dublikatlarga ruxsat berilmagan
Ya'ni lug'atlarda bir xil kalitga ega ikkita element bo'lishi mumkin emas bunda har doimgi kabi oxirigi kiritilgan qiymat olinadi:
5οΈβ£. Lug'at elementlaridagi qiymatlar har qanday turdagi ma'lumotlarga ega bo'lishi mumkin:
6οΈβ£. dict() konstruktori orqali lug'atlar yaratilishi mumkin:
#dict
1οΈβ£. Lug'atlar ma'lumotlar qiymatlarini kalit: qiymat juftlarida saqlash uchun ishlatiladi. Hamda {} qavslar orqali yasaladi.
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
print(thisdict)
#output {'brand': 'Ford', 'model': 'Mustang', 'year': 1964}2οΈβ£. Lug'at ob'ektlari tartiblangan
Ya'ni lug'at elementlari kalit: qiymat juftliklarida taqdim etiladi va kalit nomidan foydalanib unga biriktirilgan qiymatni olish mumkin.
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
print(thisdict["brand"]) #output Ford3οΈβ£. Lug'atlar o'zgaruvchan
Ya'ni lug'at yaratilgandan so'ng elementlarni o'zgartirishimiz, qo'shishimiz yoki olib tashlashimiz mumkin.
4οΈβ£. Dublikatlarga ruxsat berilmagan
Ya'ni lug'atlarda bir xil kalitga ega ikkita element bo'lishi mumkin emas bunda har doimgi kabi oxirigi kiritilgan qiymat olinadi:
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964,
"year": 2020
}
print(thisdict)
#output {'brand': 'Ford', 'model': 'Mustang', 'year': 2020}5οΈβ£. Lug'at elementlaridagi qiymatlar har qanday turdagi ma'lumotlarga ega bo'lishi mumkin:
thisdict = {
"brand": "Ford",
"electric": False,
"year": 1964,
"colors": ["red", "white", "blue"]
}6οΈβ£. dict() konstruktori orqali lug'atlar yaratilishi mumkin:
thisdict = dict(name = "John", age = 36, country = "Norway")
print(thisdict)
#output {'name': 'John', 'age': 36, 'country': 'Norway'}
#dict
πΏ1
python kitob.pdf
2 MB
π Python dasturlash tilini 0 dan boshlab, Python Core qismini mustaqil o'rganmoqchi bo'lganlar uchun ajoyib kitob π₯
Python Dasturlash tilida maslalar va ularni yechish usullari.pdf
4.8 MB
Pythonda masalalar va ularning yechish usullari
π₯1
PYTHONπ€π
Python Dasturlash tilida maslalar va ularni yechish usullari.pdf
Learning algoritmπ§§:
1. Python Core ‴οΈβ
2. Python OOP ππ
3. Telegram Bots π
4. Django MVT, Django DRF. Real projects. π
5. Interview questions. π
and etc.
Β©@python_core_oop
1. Python Core ‴οΈβ
2. Python OOP ππ
3. Telegram Bots π
4. Django MVT, Django DRF. Real projects. π
5. Interview questions. π
and etc.
Β©@python_core_oop
π1
Python OOP (Object Oriented Programming - Ob'ektga yo'nalitirilgan dastulash)
Pythonda OOP tushunchalari:
1. Class in Python - Pythonda sinflar
2. Objects in Python - Pythonda ob'ektlar
3. Polymorphism in Python - Pythonda Polimorfizm
4. Encapsulation in Python - Pythonda Inkapsulatsiya
5. Inheritance in Python - Pythonda meros olish (vorislik)
6. Data Abstraction in Python - Pythonda ma'lumot abstraktsiyasi
@python_core_oop
Pythonda OOP tushunchalari:
1. Class in Python - Pythonda sinflar
2. Objects in Python - Pythonda ob'ektlar
3. Polymorphism in Python - Pythonda Polimorfizm
4. Encapsulation in Python - Pythonda Inkapsulatsiya
5. Inheritance in Python - Pythonda meros olish (vorislik)
6. Data Abstraction in Python - Pythonda ma'lumot abstraktsiyasi
@python_core_oop
π1
π OOP nima?
OOP β bu Object-Oriented Programming (obyektga yo'naltirilgan dasturlash) degani. Bu uslubda dastur biror narsa yoki hodisani obyekt sifatida yaratadi.
π₯ Asosiy tushunchalar:
1οΈβ£ Class β obyektning qolipi. Bu yerda xususiyatlar (properties) va funksiyalar (methods) belgilanadi.
2οΈβ£ Object β class asosida yaratilgan haqiqiy nusxa.
π‘ Oddiy misol:
Tasavvur qiling, siz mashinalarni tasvirlayotgan dastur yozyapsiz. Har bir mashina o'z brendi, modeli va harakati bo'lishi kerak.
Output:
π― Xulosa:
Class β bu "Mashina qanday bo'lishi kerak?" degan savolga javob.
Object β bu ushbu class asosida yaratilgan aniq mashina (Toyota yoki Malibu).
@python_core_oop
OOP β bu Object-Oriented Programming (obyektga yo'naltirilgan dasturlash) degani. Bu uslubda dastur biror narsa yoki hodisani obyekt sifatida yaratadi.
π₯ Asosiy tushunchalar:
1οΈβ£ Class β obyektning qolipi. Bu yerda xususiyatlar (properties) va funksiyalar (methods) belgilanadi.
2οΈβ£ Object β class asosida yaratilgan haqiqiy nusxa.
π‘ Oddiy misol:
Tasavvur qiling, siz mashinalarni tasvirlayotgan dastur yozyapsiz. Har bir mashina o'z brendi, modeli va harakati bo'lishi kerak.
# Class yaratamiz
class Car:
def __init__(self, brand, model):
self.brand = brand # Xususiyatlar
self.model = model #Xususiyatlar
def drive(self): #obyektni harakatlantirish uchun method
return f"{self.brand} {self.model} harakatda!"
# Objectlar yaratamiz
car1 = Car("Toyota", "Corolla")
car2 = Car("Chevrolet", "Malibu")
# Natijalarni chop qilamiz
print(car1.drive())
print(car2.drive())
Output:
Toyota Corolla harakatda!
Chevrolet Malibu harakatda!
π― Xulosa:
Class β bu "Mashina qanday bo'lishi kerak?" degan savolga javob.
Object β bu ushbu class asosida yaratilgan aniq mashina (Toyota yoki Malibu).
@python_core_oop
π Tavsiya:
Avvalclass va objectlarni tushuning.
Keyin meros olish va inkapsulyatsiyani o'rganing.
Amaliyot qiling β o'zingizning obyektlaringizni yarating!
π» OOP β real hayotdagi narsalarni kodda yaratish imkoniyatidir! π¨βπ»β¨
@python_core_oop
Avval
Keyin meros olish va inkapsulyatsiyani o'rganing.
Amaliyot qiling β o'zingizning obyektlaringizni yarating!
π» OOP β real hayotdagi narsalarni kodda yaratish imkoniyatidir! π¨βπ»β¨
@python_core_oop
π Asosiy OOP tamoyillari:
Inheritance (Meros olish) β Bir classdan boshqa class xususiyatlarini olish.
Encapsulation (Inkapulyatsiya) β Ma'lumotlarni yashirish va himoya qilish.
Polymorphism (Polimorfizm) β Bir xil nomdagi funksiyalarni turli xilda ishlatish.
Quyida har birini misollar bilan soddaroq tushuntirishga harakat qilaman.β¬οΈ
@python_core_oop
Inheritance (Meros olish) β Bir classdan boshqa class xususiyatlarini olish.
Encapsulation (Inkapulyatsiya) β Ma'lumotlarni yashirish va himoya qilish.
Polymorphism (Polimorfizm) β Bir xil nomdagi funksiyalarni turli xilda ishlatish.
Quyida har birini misollar bilan soddaroq tushuntirishga harakat qilaman.β¬οΈ
@python_core_oop
π1
1οΈβ£ Inheritance (Meros olish)
Meros olish degani β bitta class boshqa bir classning xususiyatlari va funksiyalarini "meros qilib oladi." Bu, bir xil kodlarni qayta yozmaslikka yordam beradi.
Oddiy misol:
Tasavvur qiling, bizda hayvonlarni tasvirlovchi dastur bor. Barcha hayvonlarda "ovqat yeyish" funksiyasi bor, lekin har bir hayvonning ovozi har xil.
Output:
π‘ Xulosa:
Meros olish orqali barcha odamlarda ovqat yeyish funksiyasini qayta yozmasdan foydalanamiz. Lekin ovoz har biri uchun alohida.
@python_core_oop
Meros olish degani β bitta class boshqa bir classning xususiyatlari va funksiyalarini "meros qilib oladi." Bu, bir xil kodlarni qayta yozmaslikka yordam beradi.
Oddiy misol:
Tasavvur qiling, bizda hayvonlarni tasvirlovchi dastur bor. Barcha hayvonlarda "ovqat yeyish" funksiyasi bor, lekin har bir hayvonning ovozi har xil.
# Asosiy class (ota class)
class Odam:
def eat(self):
return "Ovqat yeyapti."
# Bola classlar (ota classdan meros olishadi)
class Ota(Odam):
def sound(self):
return "Ha xotin!"
class Ona(Odam):
def sound(self):
return "Qayerda yuribsiz!"
# Objectlar yaratamiz
ota = Ota()
ona = Ona()
print(ota.eat())
print(ota.sound())
print(ona.eat())
print(ona.sound())
Output:
Ovqat yeyapti.
Ha xotin!
Ovqat yeyapti.
Qayerda yuribsiz!
π‘ Xulosa:
Meros olish orqali barcha odamlarda ovqat yeyish funksiyasini qayta yozmasdan foydalanamiz. Lekin ovoz har biri uchun alohida.
@python_core_oop
π2
π Inkapulyatsiya (Encapsulation) haqida batafsil tushuntirish
Inkapulyatsiya (Encapsulation) β bu OOPning muhim tamoyillaridan biri. U ma'lumotlarni yashirish va faqat zarur joyda ularga kirish imkoniyatini yaratish uchun ishlatiladi. Maqsad β sinf (class) ichidagi ma'lumotlarni (masalan, o'zgaruvchilarni) tashqi dunyodan (ja dunyomasku π lekin boshqa qanday ifodalashni bilmadim) himoya qilish.
Nima uchun inkapsulyatsiya kerak? π€
Xavfsizlik: Sinf ichidagi ma'lumotlarga to'g'ridan-to'g'ri kirishdan saqlanish, ma'lumotlarni buzilishdan himoya qilish.
Ma'lumotlarni nazorat qilish: Sinfning ichki ishlarini tashqi kodga ta'sir qilmasdan boshqarish.
Kodni soddalashtirish: Sinfning tashqi interfeysi orqali ma'lumotlar bilan ishlashni boshqarish.
Qanday qilib inkapsulyatsiyani amalga oshiramiz?
Private atributlar (xususiyatlar): Odatda sinfdagi o'zgaruvchilar boshida __ (ikkita pastki chiziq) qo'yilib private (yashirin) deb belgilanishi mumkin.
Getter va Setter metodlari: Bu metodlar orqali private ma'lumotlarga kirish va ularni o'zgartirish mumkin bo'ladi.
Nima bo'ldi?
__balance - private o'zgaruvchi. Bu o'zgaruvchini to'g'ridan-to'g'ri print qilishga urinsangiz, xato beradi, chunki bu o'zgaruvchi yashirilgan.
get_balance() - bu getter metod. Bu metod orqali balansni xavfsiz ko'rishimiz mumkin.
set_balance() - bu setter metod. Bu metod orqali balansni o'zgartirish mumkin, lekin biz faqat musbat qiymatlarni qabul qilishga ruxsat berdik.
Output:
Xulosa:
Private o'zgaruvchilar sinf ichida yashiriladi. Bunday o'zgaruvchilarga to'g'ridan-to'g'ri kirish mumkin emas.
Getter va setter metodlari orqali private ma'lumotlarga kirish mumkin. Getter yordamida ma'lumotni o'qish, setter yordamida esa o'zgartirish mumkin.
Bu usul inkapsulyatsiyani amalga oshirishga yordam beradi, ya'ni tashqi kod ma'lumotlarga bevosita kirish imkoniyatiga ega bo'lmaydi va ular faqat ma'lum metodlar orqali boshqariladi.
π‘ Foyda: Inkapsulyatsiya dasturdagi xatoliklarni kamaytiradi va ma'lumotlarni himoya qiladi.
@python_core_oop
Inkapulyatsiya (Encapsulation) β bu OOPning muhim tamoyillaridan biri. U ma'lumotlarni yashirish va faqat zarur joyda ularga kirish imkoniyatini yaratish uchun ishlatiladi. Maqsad β sinf (class) ichidagi ma'lumotlarni (masalan, o'zgaruvchilarni) tashqi dunyodan (ja dunyomasku π lekin boshqa qanday ifodalashni bilmadim) himoya qilish.
Nima uchun inkapsulyatsiya kerak? π€
Xavfsizlik: Sinf ichidagi ma'lumotlarga to'g'ridan-to'g'ri kirishdan saqlanish, ma'lumotlarni buzilishdan himoya qilish.
Ma'lumotlarni nazorat qilish: Sinfning ichki ishlarini tashqi kodga ta'sir qilmasdan boshqarish.
Kodni soddalashtirish: Sinfning tashqi interfeysi orqali ma'lumotlar bilan ishlashni boshqarish.
Qanday qilib inkapsulyatsiyani amalga oshiramiz?
Private atributlar (xususiyatlar): Odatda sinfdagi o'zgaruvchilar boshida __ (ikkita pastki chiziq) qo'yilib private (yashirin) deb belgilanishi mumkin.
Getter va Setter metodlari: Bu metodlar orqali private ma'lumotlarga kirish va ularni o'zgartirish mumkin bo'ladi.
class BankAccount:
def __init__(self, balance):
self.__balance = balance # Private ma'lumot (yashirilgan)
def deposit(self, amount): # Hisobga pul qo'shish
self.__balance += amount
def get_balance(self): # Hisob balansini ko'rsatish (getter)
return self.__balance
def set_balance(self, new_balance): # Hisob balansini o'zgartirish (setter)
if new_balance < 0:
print("Balans manfiy bo'lishi mumkin emas!")
else:
self.__balance = new_balance
# Bank hisobini yaratamiz
account = BankAccount(50000)
# To'g'ridan-to'g'ri __balance ga kirish mumkin emas
# print(account.__balance) # Bu xato beradi!
# Yashirilgan balansni olish uchun getter ishlatamiz
print(account.get_balance()) # 50000
# Yashirilgan balansni o'zgartirish uchun setter ishlatamiz
account.set_balance(70000)
print(account.get_balance()) # 70000
# Salbiy balans qo'yishning oldini olamiz
account.set_balance(-1000) # Balans manfiy bo'lishi mumkin emas!
print(account.get_balance()) # 70000
Nima bo'ldi?
__balance - private o'zgaruvchi. Bu o'zgaruvchini to'g'ridan-to'g'ri print qilishga urinsangiz, xato beradi, chunki bu o'zgaruvchi yashirilgan.
get_balance() - bu getter metod. Bu metod orqali balansni xavfsiz ko'rishimiz mumkin.
set_balance() - bu setter metod. Bu metod orqali balansni o'zgartirish mumkin, lekin biz faqat musbat qiymatlarni qabul qilishga ruxsat berdik.
Output:
50000
70000
Balans manfiy bo'lishi mumkin emas!
70000
Xulosa:
Private o'zgaruvchilar sinf ichida yashiriladi. Bunday o'zgaruvchilarga to'g'ridan-to'g'ri kirish mumkin emas.
Getter va setter metodlari orqali private ma'lumotlarga kirish mumkin. Getter yordamida ma'lumotni o'qish, setter yordamida esa o'zgartirish mumkin.
Bu usul inkapsulyatsiyani amalga oshirishga yordam beradi, ya'ni tashqi kod ma'lumotlarga bevosita kirish imkoniyatiga ega bo'lmaydi va ular faqat ma'lum metodlar orqali boshqariladi.
π‘ Foyda: Inkapsulyatsiya dasturdagi xatoliklarni kamaytiradi va ma'lumotlarni himoya qiladi.
@python_core_oop
π1