Sobes.tech
Junior
251

Python'da sinf ob'ektmi?

AIdan javob

sobes.tech AI

Ha, ular. Python'da sinflar birinchi darajali obyektlar (first-class objects) hisoblanadi.

Bu shuni anglatadiki, sinflar ob'ektlarning xususiyatlariga ega:

  • Turi bor: Har qanday sinfning turi type.
  • O'zgaruvchilarga tayinlanishi mumkin: my_class = MyClass.
  • Funktsiyaga argument sifatida o'tkazilishi mumkin: def process_class(cls): ... process_class(MyClass).
  • Funktsiya tomonidan qaytarilishi mumkin: def create_class(): class NewClass: pass; return NewClass.
  • Atributlari (metodlar va ma'lumotlar) mavjud: Ular nuqta notatsiyasi bilan kirishiladi (MyClass.my_method).
# Misol: sinf obyekt sifatida
class MyClass:
    def __init__(self, value):
        self.value = value

    def display(self):
        print(f"Qiymat: {self.value}")

# Sinfni o'zgaruvchiga tayinlash
class_obj = MyClass

# O'zgaruvchini ishlatib nusxa olish
instance = class_obj(10)
instance.display()

# Sinfning turini tekshirish
print(f"MyClass turi: {type(MyClass)}")

Sinf asosida yaratilgan nusxalar (obyektlar) ham obyektlardir, lekin ularning turi — o'z sinfi.

# Misol: nusxa obyekt sifatida
instance2 = MyClass(20)

# Nusxaning turini tekshirish
print(f"instance2 turi: {type(instance2)}")

Shunday qilib, Python'da "hamma narsa obyekt" va sinflar bundan mustasno emas. Ular type metaclassi (yoki uning vorislari) tomonidan yaratilgan obyektlardir.