Python ये Object-Oriented Programming(Objects) Language है | इसके
साथ-साथ ये Procedural-Oriented Programming(Functions) Language भी है |
ज्यादातर Programming Languages में OOP का concept होता है | Python के Object में variables, functions या methods होते है |
जैसे कि, अगर कोई प्राणी है तो उस प्राणी का behavior और properties जैसे कि, उसका भौकना, चलना, देखना , उसके शरीर की रचना को variables और functions या methods के जरिये लिखा जाता है |
हर एक से अधिक प्राणी को अलग-अलग नाम से उनके objects भी बनाये जाते है |
Syntax :
उसके बाद एक docstring लिया गया है | ये docstring class में optional होता है | docstring ये class के बारे में कुछ जानकारी देने के लिए लिया जाता है |
उसके बाद class_body में कुछ statements के रूप में कुछ variables, functions या methods हो सकते है |
Source Code :
Syntax :
Source Code :
class Variable अपने className या उसके object के जरिये access किये जा सकते है लेकिन instance variable को access करने के लिये class के object की जरुरत पड़ती है |
Instance Variable को constructor के अन्दर create किया जाता है |
Source Code :
Source Code :
Python में हर class के साथ In-Built Class Attributes होते है |
ज्यादातर Programming Languages में OOP का concept होता है | Python के Object में variables, functions या methods होते है |
जैसे कि, अगर कोई प्राणी है तो उस प्राणी का behavior और properties जैसे कि, उसका भौकना, चलना, देखना , उसके शरीर की रचना को variables और functions या methods के जरिये लिखा जाता है |
हर एक से अधिक प्राणी को अलग-अलग नाम से उनके objects भी बनाये जाते है |
What is a Class ?
- Class के अन्दर कुछ functions या methods होते है और उससे निगडित कुछ variables दिए जाते है | उन functions और variables को एक ही class पर इकट्ठा किया जाता है और उन data को access करने के लिए उस class का object बनाया जाता है |
- Class अपने data को hold करने का काम करता है |
- Class ये Object की blueprint या layout होता है |
- एक Class के एक या एक से ज्यादा Object create किये जा सकते है |
Defining Class in Python
class को create करने के लिए पहले 'class' keyword का इस्तेमाल किया जाता है |Syntax :
class MyClass:
"I am a Docstring"
#class_body
Syntax पर 'myClass' ये class का नाम है |उसके बाद एक docstring लिया गया है | ये docstring class में optional होता है | docstring ये class के बारे में कुछ जानकारी देने के लिए लिया जाता है |
उसके बाद class_body में कुछ statements के रूप में कुछ variables, functions या methods हो सकते है |
Example for Creating a Class
Example पर Class के नाम से ही Object का इस्तेमाल किया गया है |इस class object; का इस्तेमाल class के अलग-अलग attributes access करने के लिए किया जाता है | निचे docstring को access करने के लिए '__doc__' इस class attribute का इस्तेमाल किया गया है और उसके बाद func ये attribute function object को return करता है |Source Code :
class MyClass: # Class Name
"I am a Docstring"
def func(self):
print("Hello World")
print(MyClass.__doc__) # docstring attribute
print(MyClass.func) # func attribute
Output :
I am a Docstring <function MyClass.func at 0x02423270>
Creating an Object in Python
Object को variable के रूप में ही create किया जाता है | उस variable पर जैसे function को call किया जाता है वैसे ही उस class को function के रूप में variable पर store किया जाता है |Syntax :
Object_Name = Class_Name()
Example for Creating a Class
Example पर MyClass इस Class का Object 'obj' बनाया गया है |Source Code :
class MyClass:
"I am a Docstring"
var = 1
def func(self):
print("Hello World")
obj = MyClass() #Class Object
Accessing Class Variable and Function
Source Code :
class MyClass:
"I am a Docstring"
var = 1
def func(self):
print("Hello World")
obj = MyClass() #Object
print("MyClass.var :",MyClass.var) #1
#same as
print("obj.var :",obj.var) #2
print("MyClass.func :",MyClass.func)#3
print("obj.func :",obj.func) #4
MyClass.func(obj) #5
#same as
obj.func() #6
Output :
MyClass.var : 1 obj.var : 1 MyClass.func : <function MyClass.func at 0x02993270> obj.func : <bound method MyClass.func of <__main__.MyClass object at 0x0278AD50>> Hello World Hello World
Explaination of Above Example
- Comment#1 : यहाँ पर Class name वाले Object(MyClass) से class variable को access किया गया है |
- Comment#2 : यहाँ पर Class के बनाये हुए Object(obj) से class variable को access किया गया है |
- Comment#3 : यहाँ पर Class name वाले Object(MyClass) से func इस class function को access किया गया है लेकिन ये 'function object' को return करता है |
- Comment#4 : यहाँ पर Class के बनाये हुए Object(obj) से func इस class function को access किया गया है लेकिन ये 'method object' को return करता है |
- Comment#5 : यहाँ पर MyClass इस class के function पर जो definition पर 'self' इस parameter को pass किया गया है वैसे ही 'obj' इस class के object को argument पर pass किया गया है |
- Comment#6 : definition पर 'self' ये parameter pass किया गया है लेकिन यहाँ पर कोई भी argument को pass नहीं किया गया है इसका मतलब है कि जब बनाये हुए object द्वारा function को access किया जाता है तब खुद object ही argument पर pass हो जाता है | उसे अलग से देने की जरुरत होती है |
Class Attribute/Variable and Instance Attribute/Variable
Example पर class variable 'classVar' और instance variable 'inVar' लिया गया है |class Variable अपने className या उसके object के जरिये access किये जा सकते है लेकिन instance variable को access करने के लिये class के object की जरुरत पड़ती है |
Instance Variable को constructor के अन्दर create किया जाता है |
Source Code :
class MyClass:
classVar = 1 #classVar is a Class Variable
def __init__(self, inVar):
self.inVar = inVar #inVar is a Instance Variable
obj1 = MyClass("Ramesh")
obj2 = MyClass("Rahul")
print("Access Class Variable using Class Name :", MyClass.classVar)
print("Access Class Variable using Class Object :", obj1.classVar)
print(obj1.classVar, obj1.inVar) #Value of inVar is Ramesh
print(obj2.classVar, obj2.inVar) #Value of inVar is Rahul
Output :
Access Class Variable using Class Name : 1 Access Class Variable using Class Object : 1 1 Ramesh 1 Rahul
Changing Class Variable's and Instance Variable's Values
Class के variable की value change करने के लिए ClassName या ClassObject को इस्तेमाल किया जा सकता है लेकिन instance variable की value को change करना हो तो ClassObject का ही इस्तेमाल किया जाता है |Source Code :
class MyClass:
classVar = 1 #classVar is a Class Variable
def __init__(self, inVar):
self.inVar = inVar #inVar is a Instance Variable
obj1 = MyClass("Ramesh")
obj2 = MyClass("Rahul")
print("Before Changing :")
print(obj1.classVar, obj1.inVar)
MyClass.classVar = 2 #Changing Class Variable's Value by ClassName
obj1.inVar = "Rakesh" #Changing Instance Variable's Value
print("After Changing :")
print(obj1.classVar, obj1.inVar)
Output :
Before Changing : 1 Ramesh After Changing : 2 Rakesh
Python में हर class के साथ In-Built Class Attributes होते है |
- __doc__ : ये दिए गए class की docstring को return करता है अगर docstring नहीं होती है तो 'None' return होता है |
- __name__ : ये दिए गए class का नाम return करता है |
- __module__ : जहा पर class होता वो module name return किया जाता है अगर class current program पर होता है तो '__main__' return होता है |
- __bases__ : ये दिए गए class का base class(es) tuple में return करता है | अगर कोई base class नहीं होता है तो empty tuple return करता है |
- __dict__ : ये दिए गए class के attributes को dictionary में return करता है |
Example for Class Attributes in Python
Source Code :
class Employee:
"I am in class Employee"
pass
class Fitness(Employee):
"I am in class Fitness"
pass
class Company(Fitness):
"I am in class Company"
pass
print("Docstring of class Company :",Company.__doc__)
print("Class Name :",Company.__name__)
print("Module Name :",Company.__module__)
print("Base Class of Company :",Company.__bases__)
print("Company's class attributes :",Company.__dict__)
Output :
Docstring of class Company : I am in class Company
Class Name : Company
Module Name : __main__
Base Class of Company : (<class '__main__.Fitness'>,)
Company's class attributes : {'__module__': '__main__', '__doc__': 'I am in class Company'}
Example for All Class Attributes in Python
Source Code :
class Employee:
"I am in class Employee"
pass
class Fitness(Employee):
"I am in class Fitness"
pass
class Company(Fitness):
"I am in class Company"
pass
obj = Employee()
for attr in dir(Employee):
if attr.startswith('__'):
print(attr)
Output :
__class__ __delattr__ __dict__ __dir__ __doc__ __eq__ __format__ __ge__ __getattribute__ __gt__ __hash__ __init__ __init_subclass__ __le__ __lt__ __module__ __ne__ __new__ __reduce__ __reduce_ex__ __repr__ __setattr__ __sizeof__ __str__ __subclasshook__ __weakref__
Functions for Class Attributes
| delattr() | object के attribute को delete करने के लिए इस्तेमाल किया जाता है | |
| getattr() | object के attribute की value को return करता है | |
| hasattr() | object का attribute है या नहीं ये check boolean value में return करता है | |
| setattr() | object के attribute के set किया जाता है अगर पहले ही set होता है तो उसे overwrite किया जाता है लेकिन ये अलग-अलग memory share करता है | ये None return करता है | |
delattr() Function in Python
Syntax :delattr(object, attribute)Example :
class MyClass:
a = 5
obj = MyClass()
print(obj.a)
delattr(obj, 'a') #same as del obj.a
#Output :
# delattr(obj, 'a')
#AttributeError: a
getattr() Function in Python
Syntax :getattr(object, attribute)Example :
class MyClass:
a = 5
obj = MyClass()
print(getattr(obj, 'a'))
#same as
print(obj.a)
#Output
#5
#5
hasattr() Function in Python
Syntax :hasattr(object, attribute)Example :
class MyClass:
a = 5
obj = MyClass()
print(hasattr(obj, 'a'))
#same as
print(bool(obj.a))
#Output
#True
#True
print(hasattr(obj, 'b')) #return False if attribute is not set
#not same as
print(bool(obj.b)) #raise AttributeError if attribute is not set
#Output
#False
#AttributeError
setattr() Function in Python
Syntax :setattr(object, attribute, attr_value)Example :
class MyClass:
a = 5
obj = MyClass()
setattr(obj, 'a', 8)
print(getattr(obj, 'a'))
#Output
#8
setattr(obj, 'b', 10)
print(getattr(obj, 'b'))
#Output
#10







No comments: