مرکزی مواد پر جائیں
ماڈیول 7 · سبق 1 از 4کورس میں 25/36~14 min
ماڈیول اسباق (1/4)

کلاسز اور مثالیں۔

ایک کلاس ایسی اشیاء بنانے کے لیے ایک بلیو پرنٹ ہے جس میں ڈیٹا ہوتا ہے (صفات) اور سلوک (طریقے)۔ ایک مثال ایک ٹھوس چیز ہے جس سے تخلیق کی گئی ہے۔ کلاس

کم سے کم نحو

Python
class Cane:
    def __init__(self, nome, eta):
        self.nome = nome
        self.eta = eta

    def abbaia(self):
        return f"{self.nome} dice WOOF!"

# creazione di istanze
fido = Cane("Fido", 3)
luna = Cane("Luna", 5)

fido.nome       # 'Fido'
fido.abbaia()   # 'Fido dice WOOF!'

__init__: "کنسٹرکٹر"

جب آپ ایک بناتے ہیں تو __init__ طریقہ کو خودکار طور پر کہا جاتا ہے۔ مثال (Cane("Fido", 3))۔ یہ صفات کو شروع کرنے کے لیے استعمال ہوتا ہے۔

تکنیکی طور پر یہ کنسٹرکٹر نہیں ہے (آبجیکٹ پہلے ہی کے ذریعہ تخلیق کیا گیا ہے۔ __new__)، لیکن یہ وہ جگہ ہے جہاں آپ نے ابتدائی حالت سیٹ کی ہے۔

self: پہلا پیرامیٹر

self اس مثال کا حوالہ ہے جس پر طریقہ کال کیا گیا تھا۔ یہ ایک ہے کنونشن (کلیدی لفظ نہیں) اور مثال کا ہمیشہ پہلا پیرامیٹر ہوتا ہے۔ طریقے

Python
fido.abbaia()
# equivalente a Cane.abbaia(fido)
# Python passa fido come self automaticamente

مثال بمقابلہ کلاس اوصاف

Python
class Cane:
    specie = "Canis familiaris"   # attributo di CLASSE (condiviso)

    def __init__(self, nome):
        self.nome = nome           # attributo di ISTANZA (per ognuno)

fido = Cane("Fido")
luna = Cane("Luna")

fido.nome       # 'Fido'        (istanza)
luna.nome       # 'Luna'        (istanza)
fido.specie     # 'Canis familiaris'  (cercato sulla classe)
Cane.specie     # 'Canis familiaris'

متعدد طریقے اور ریاست

Python
class Contatore:
    def __init__(self, inizio=0):
        self.valore = inizio

    def incrementa(self, di=1):
        self.valore += di

    def reset(self):
        self.valore = 0

c = Contatore()
c.incrementa()
c.incrementa(di=5)
c.valore       # 6
c.reset()
c.valore       # 0

آپ کی باری

ورزش#python.m7.l1.e1
کوششیں: 0لوڈ ہو رہا ہے…

__init__(self, x, y) کے ساتھ ایک کلاس `پوائنٹ` کی وضاحت کریں جو صفات کو محفوظ کرتا ہے۔ ایک طریقہ شامل کریں `distance_from_origin` جو x^2 + y^2 کا مربع جڑ لوٹاتا ہے۔ `p = پوائنٹ(3, 4)` بنائیں اور `p.distance_from_origin()` کا اندازہ کریں۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

math.sqrt(self.x ** 2 + self.y ** 2)

3 کوششوں کے بعد حل دستیاب ہے۔

ورزش کا جائزہ لیں۔

ورزش#python.m7.l1.e2
کوششیں: 0لوڈ ہو رہا ہے…

__init__(self, balance=0) کے ساتھ `BankAccount` کی تعریف کریں اور طریقوں `deposit(ramount)`, `withdraw(ramount)` جو self.balance میں ترمیم کرتے ہیں۔ `a = BankAccount(100)` بنائیں، 50 جمع کریں، 30 نکالیں۔ `a.balance` کا اندازہ کریں۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

self.balance += ڈپازٹ میں رقم۔

3 کوششوں کے بعد حل دستیاب ہے۔

اضافی چیلنج

ورزش#python.m7.l1.e3
کوششیں: 0لوڈ ہو رہا ہے…

Define a class `Rectangle` with a constructor `__init__(self, width, height)` to set width and height, and a method `area(self)` that returns the product of width and height. Instantiate a rectangle with width `4` and height `5` storing it in `rect`, and evaluate `rect.area()`.

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

علاقے (خود) کے اندر صفات تک رسائی کے لیے سیلف کا استعمال کرنا یاد رکھیں۔

3 کوششوں کے بعد حل دستیاب ہے۔