سبق Objects and Class

Objects
پائتھون میں ہر چیز ایک object ہے۔چاہے وہ ایک لسٹ ہو ، ڈکشنری ہو ، اسٹرنگ ہو یا کوئی عدد ہو۔
Object پائتھون OOP پروگرام کی بنیادی اکائی ہے۔
پروگرام یا تو براہ راست ان objects پر کوئی عمل کرتے ہیں یا ان سے متعلقہ اسلوب(method) کے ذریعے یعنی بنیادی طور پر ایک object دو چیزوں پر مشتمل ہوتا ہے۔

1۔ اوصاف (attributes) جنہیں خصوصیات (properties) بھی کہا جاتا ہے۔
2۔ قاعدے (methods) جن کے ذریعے اوصاف(attributes) کو بدلا جا سکے۔

ایک مفعول(object) کی حالت ہوگی جو اوصاف(attributes) پر مبنی ہوں گی اور چند قاعدے(methods) ہو سکتے ہیں جن سے وہ کام انجام دے گا۔
PHP:
>>> import sys
>>> def function():
    pass
 
>>> print(type(1))
<class 'int'>
>>> print(type(""))
<class 'str'>
>>> print(type([]))
<class 'list'>
>>> print(type({}))
<class 'dict'>
>>> print(type(()))
<class 'tuple'>
>>> print(type(object))
<class 'type'>
>>> print(type(sys))
<class 'module'>
>>> print(type(function))
<class 'function'>

اس مثال میں ہم دیکھ سکتے ہیں کہ تمام چیزیں درحقیقت object ہی ہیں۔ ()type فنکشن کسی بھی object کی ٹائپ کے بارے میں بتاتا ہے۔
 
Class
صارف وضع کردہ(user defined) مفعول(object) بنانے کے لیے کلاس کا مختص لفظ استعمال کرنا پڑتا ہے۔ کلاس ایک سانچہ ہے جس سے objects بنائے جا سکتے ہیں۔
کلاس کا نمونہ یا مثال مفعول(object) کہلاتا ہے یعنی کلاس اگر وقوع پذیر ہوتی ہے تو وہ کلاس کی بجائے ایک مفعول (object ) بن جاتا ہے جس کے اوصاف ہوتے ہیں اور چند قاعدے جو وہ اس کلاس سے حاصل کرتا ہے جس کا وہ نمونہ ہے۔

نئی کلاس بنانے کے لیے class کا مختص لفظ استعمال کیا جاتا ہے اور اس کے بعد اسے بالکل خالی بھی چھوڑا جا سکتا ہے۔

PHP:
class Person:
"""Class about any Person"""

Attributes
اوصاف (attributes) کسی بھی مفعول(object) کی خصوصیات ہوتی ہیں۔ ایک مخصوص قاعدہ ()__init__ کے ذریعے کسی مفعول() کے اوصاف کو ابتدائی قیمتیں مہیا کی جا سکتی ہیں۔

PHP:
class Person:
  def __init__(self,name):
      self.name = name
 
Ahmad = Person("Ahmad")
Namra = Person("Namra")
 
print(Ahmad.name)
print(Namra.name)
 
Output:
Ahmad
Namra

ہم نے کلاس Person میں ایک خاص قاعدہ __ init__ شامل کیا جو ابتدائی قاعدہ(method) بھی کہلاتا جس میں اوصاف کی ابتدائی قیمتیں متعین کی جا سکتی ہیں۔ دوسری زبانوں میں اسے constructor بھی کہتے ہیں۔
ہر قاعدہ(method) کلاس کی تعریف بیان کرتے وقت واقعاتی مفعول(object) کے حوالے سے آغاز کرتا ہے۔ اسے رسمی طور پر self کہتے ہیں یعنی کلاس کے موجودہ مفعول کے بارے میں ہی بات ہو رہی ہے اور اس سے جڑے اوصاف(attributes) اور قاعدوں(methods) کا استعمال ہوگا۔

یہاں ہم نے نام کو بطور دلیل کلاس کے آغاز میں ابتدائی قاعدے کو بھیجا ہے۔
PHP:
self.name = name

یہاں مفعول کے وصف نام کی قیمت مقرر کی گئی ہے۔
PHP:
Ahmad = Person("Ahmad")
Namra = Person("Namra")

Person کلاس سے ہم نے دو مفعول(object) بنائے ہیں جن میں لوگوں کے نام اوصاف کے طور پر دیے ہیں اور پھر ہم نے مفعول کے اوصاف تک رسائی نام وصف کے ذریعہ کی ہے۔
جو دلائل( arguments) ہم نے مفعول وضع(instantiate) کرتے ہوئے دیے ہیں وہ کلاس میں موجود __init __ قاعدے کے مطابق ہونے چاہیے۔ "Ahmad" اور "Namra" اسٹرنگ __init __ قاعدہ (method) میں موجود پیرامیٹر name بن جاتی ہے۔

کوڈ:
print(Ahmad.name)
Ahmad
 
print(Namra.name)
Namra

اوصاف کو ابتدائی طور پر سونپنے کے علاوہ متحرک طریقہ سے بھی سونپا جا سکتا ہے یعنی مفعول کے بن جانے کے بعد بھی۔

PHP:
class Person:
    pass
 
p = Person()
p.name = "Sabir"
print(p.name)

ہم نے Person نام کی ایک خالی کلاس بنائی اور پھر نام کا وصف بنایا اور اسے ایک قیمت سونپی جسے پرنٹ کر لیا۔
کوڈ:
Sabir
 
Methods
قاعدے(methods) وہ فنکشن ہوتے ہیں جو کلاس کے اندر بیان کیے جاتے ہیں۔ ان کی مدد سے مفعول(object) کے اوصاف(attributes) پر عمل کیے جاتے ہیں۔ قاعدے() OOP میں ایک اہم ترین کام encapsulation کے لیے بھی استعمال ہوتے ہیں یعنی معلومات کو مخفی رکھنے اور مواد پر ہونے والے عمل اور طریقہ کار کی تفصیل کو پوشیدہ رکھنے کے لیے قاعدوں کا استعمال کیا جاتا ہے۔

اب ہم اوپر موجود کلاس میں چند مزید قاعدے اور اوصاف کا اضافہ کریں گے۔

PHP:
class Person:
  def __init__(self,name,age):
      self.name = name
      self.age = age
 
  def talk(self):
        print("Hi! My name is", self.name, "and I am", self.age, "years old.")
 
 
ahmad = Person("Ahmad",30)
namra = Person("Namra",20)
 
ahmad.talk()
namra.talk()

آخری دو لائنوں کا نتیجہ کچھ یوں نکلے گا ۔
PHP:
ahmad.talk()
Hi! My name is Ahmad and I am 30 years old.
 
namra.talk()
Hi! My name is Namra and I am 20 years old.
 
Top