32. Sinf yaratish uchun kalit so'zdan foydalaning class: X nomli xususiyatga EGA MyClass nomli sinf yarating



Download 19,83 Kb.
Sana02.03.2022
Hajmi19,83 Kb.
#479640
Bog'liq
Sun\'iy intellekt masalalari uchun dasturlash


32. Sinf yaratish uchun kalit so'zdan foydalaning class:
X nomli xususiyatga ega MyClass nomli sinf yarating:
class MyClass:
x = 5
Yuqoridagi misollar eng oddiy ko'rinishdagi sinflar va ob'ektlar bo'lib, ular haqiqiy hayotda qo'llanilmaydi.
Sinflarning ma'nosini tushunish uchun biz o'rnatilgan __init__() funktsiyasini tushunishimiz kerak.
Barcha sinflarda __init__() funksiyasi mavjud bo'lib, u har doim sinf ishga tushirilganda bajariladi.
Ob'ekt xususiyatlariga qiymatlarni belgilash yoki ob'ekt yaratilayotganda bajarilishi kerak bo'lgan boshqa operatsiyalar uchun __init__() funksiyasidan foydalaning:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age

p1 = Person("John", 36)

print(p1.name)
print(p1.age)
Ob'ektlarda usullar ham bo'lishi mumkin. Ob'ektlardagi usullar ob'ektga tegishli bo'lgan funktsiyalardir.
Keling, Person sinfida usul yarataylik:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age

def myfunc(self):
print("Hello my name is " + self.name)

p1 = Person("John", 36)
p1.myfunc()
Siz quyidagi kabi ob'ektlardagi xususiyatlarni o'zgartirishingiz mumkin:
p1.age = 40
delKalit so'zdan foydalanib, ob'ektlardagi xususiyatlarni o'chirishingiz mumkin : del p1.age
Kalit so'z yordamida ob'ektlarni o'chirishingiz mumkin del:
del p1

33. Inkapsulyatsiya prinsipi. Uni qo’llashga oid misollar


Obyektga Yo'naltirilgan Dasturlashning tamoyillaridan biri bu inkapsulyatsiya, ya'ni obyektning xususiyatlarga to'g'ridan-to'g'ri (nuqta orqali) murojat qilishni va ularning qiymatini o'zgartirishni taqiqlab qo'yish. Pythonda bunday yopiq xususiyatlarning nomi ikki pastki chiziq bilan boshlanadi:
1
from uuid import uuid4
2
class Avto:
3
"""Avtomobil klassi"""
4
def __init__(self,make,model,rang,yil,narh,km=0):
5
"""Avtomobilning xususiyatlari"""
6
self.make = make
7
self.model = model
8
self.rang = rang
9
self.yil = yil
10
self.narh = narh
11
self.__km = km
12
self.__id = uuid4()
13
14
def get_km(self):
15
return self.__km
16
17
def get_id(self):
18
return self.__id
Copied!
Yuqoridagi kodimizning 11-qatorida __km xususiyati avtomobilning necha km yurgani haqida ma'lumot saqlaydi va bu ma'lumotni tashqaridan o'zgartirib bo'lmaydi. Kodimizning 12-qatorida esa har bir yangi yaratilgan avtomobilga yangi, noyob va takrorlanmas ID generasiya qilish uchun uuid4() funksiyasidan foydalanayapmiz. Deylik biz mashinalar sotish uchun onlayn bozor yaratsak, bozorimizga qo'shilgan har bir moshina endi o'zining ID raqamiga ega bo'ladi va bu ID raqamni to'g'ridan-to'g'ri (nuqta orqali) ko'rib bo'lmaydi.
1
avto1 = Avto("GM","Malibu","Qora",2020,40000,100000)
2
avto1.__km
Copied!
Natija: AttributeError: 'Avto' object has no attribute '__km'
Yopiq xususiyatlarni ko'rish uchun esa alohida metodlar yozish maqsadga muvofiq bo'ladi (get_km() va get_id()):
1
print(f"ID: {avto1.get_id()}")
Copied!
Natija: ID: 1d4f39a4-3222-4682-9231-6275ca5e1bff
Bunday yopiq xususiyatlarni o'zgartirish ham metodlar orqali amalga oshirilishi kerak. Misol uchun mashinaning necha km yurganini o'zgartirish uchun klassimizga quyidagi metodni qo'shamiz:
1
def add_km(self,km):
2
"""Mashinaning km ga yana km qo'shish"""
3
if km>=0:
4
self.__km += km
5
else:
6
print("Mashina km kamaytirib bo'lmaydi")
Copied!
1
avto1.add_km(1500)
2
print(avto1.get_km())
Copied!
Natija: 101500
Inkapsulyatsiyaning maqsadi obyektning ma'lum xususiyatlarini tashqi ta'sirdan himoya qilish. Misol uchun yuqoridagi misolimizda mashinaning qancha yurganini faqat musbat tarafga o'zgartirish mumkin, noyob ID raqamini esa umuman o'zgartirib bo'lmaydi.
Download 19,83 Kb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish