TGViewer
Otabek’s I/O Otabek’s I/O @otabekswe · 2.84K subscribers
Post #260 788
Classlar qanday yaratiladi?

Bir postga ko'zim tushib qoldi MetaClass haqida. Metaclassdan avval classlar qanday yaratilishi haqida qisqacha bo'lishib o'tmoqchiman.

type() orqali biz istalgan objectni turini tekshiramiz ammo aynan o'sha type() bizga class yaratib berishini bilarmidik?

class Dog:
def __init__(self, name: str) -> None:
self.name = name


Siz odatda classlarni shunday yaratasiz aslida esa orqa fonda boshqacha ishlar bo'ladi. type(Dog) desangiz u <class 'type'> classini objecti ekanligini ko'rishiz mumkin. Endi keling nimagaligni tushuntiray. Siz tepadagi traditional yo'l bilan class yaratganingizda u yerda mana bu narsalar bo'ladi.

class Dog(object, metaclass=type):
def __init__(self, name: str) -> None:
self.name = name


yuqorida ko'rsatilgan inheritance va metaclass qismlarini siz tashlab ketasiz ammo python uni run timeda shunday olib ketadi by default. Keling bu nima uchun undayligini gaplashsak. Qadamlarga bo'lamiz:

1. Python classni tana qismidagi kodlarni string qilib oladi
2. Bo'sh bitta dictionary ochadi.
3. Va ularni type()ga berish orqali sizga typedan object qaytaradi.

Yana bir qoida "Pythonda hamma narsa object".

Keling endi amaliyotga o'tsak. 1-qadam:

class_body = '''
def __init__(self, name: str) -> None:
self.name = name
'''


class tanasi uchun class_body o'zgaruvchisini ochib oldik va tanasidagi kodni doc-string ichiga yozib oldik. 2-qadamga o'tamiz.

class_dict = {}

Classlardagi ma'lumotlar key value sifatida saqlanadi shuning uchun class_dict ochildi. 3-qadam

endi class_bodydagi elementlarni class_dict ga o'tkazish uchun python standart exec() dan foydalanamiz. Bu shunchaki string shakldagi kodni ishga tushirib beradi.

exec(class_dict globals(), class_body)

Endi class_dict ni print qilib ko'rsangiz ajoyib narsa ko'rasiz. Hop ammo keling keyingi qadam klass yaratishga o'tamiz. 3-qadam:

Dog = type('Dog', (object,), class_dict)

VOILA! Class tayyor. Endi Persondan object yaratishingiz mumkin. Keling kodlarni jamlaymiz:

class_body = '''
def __init__(self, name: str) -> None:
self.name = name
'''
class_dict = {}
exec(class_body, globals(), class_dict)
Dog = type('Dog', (object,), class_dict)

bobik = Dog('Bobik')
print(bobik)
print(bobik.name)


Qisqacha shunday ishlar bo'ladi ammo siz traditional yo'ldan yuravering bu ish sal bosh og'riqrog'u ammo endi bilasiz ular qanday yaratilishini.

@otabekswe
More from @otabekswe
  1. Sep 28, 2026Voicelab da bizga eng qiziq bo'lgan mavzu bu Small Language Models (Large Language Models…
  2. Sep 10, 2026Barchamiz miriqib kuzatgan O'rgimchak Odam, Chaqmoq Makvin, Aka-uka Kreshlar (Muzlik davri…
  3. Sep 7, 2026Biz yangilik qilishdan to'xtamayabmiz. • Aisha Comet LLM modelimizni chiqardik. Platformag…
  4. Sep 4, 2026#experience Deyarli bir yarim yildan buyon intervyular jarayonida bitta savol doim so'raym…
  5. Aug 28, 2026#experience Ko'pchilik bir xil savol beradi: "Model o'zilarnikimi yoki open-source modelmi…
  6. Aug 25, 2026Voicelab Desktop V1 chiqdi (katta yangilanish va yaxshilanish qildik), har kunlik bepul kr…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →