sponsor

sponsor

Slider

Recent Tube

Business

Technology

Life & style

Games

Sports

Fashion

» » Python Class And Object

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 भी बनाये जाते है |

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

«
Next
Newer Post
»
Previous
Older Post

No comments:

Leave a Reply