इंस्टेंस और क्लास डेटा

Python में ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग

Alex Yarosh

Content Quality Analyst @ DataCamp

OOP के मुख्य सिद्धांत

 

इनहेरिटेंस (Inheritance):

  • मौजूदा कोड की क्षमता बढ़ाना

पॉलीमॉर्फ़िज़्म (Polymorphism):

  • एक एकीकृत इंटरफ़ेस बनाना

एन्कैप्सुलेशन (Encapsulation):

  • डेटा और मेथड्स को साथ बाँधना
Python में ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग

इंस्टेंस-स्तर डेटा

class Employee:
    def __init__(self, name, salary):
       self.name = name
       self.salary = salary

emp1 = Employee("Teo Mille", 50000) 
emp2 = Employee("Marta Popov", 65000)
  • name, salary इंस्टेंस एट्रिब्यूट्स हैं
  • self किसी इंस्टेंस से जुड़ता है
Python में ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग

क्लास-स्तर डेटा

  • किसी क्लास की सभी इंस्टेंस में साझा डेटा
  • class के बॉडी में क्लास एट्रिब्यूट्स परिभाषित करें
class MyClass:
    # Define a class attribute
    CLASS_ATTR_NAME = attr_value


  • क्लास के भीतर "ग्लोबल वैरिएबल"
Python में ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग

क्लास-स्तर डेटा

class Employee:
  # Define a class attribute
  MIN_SALARY = 30000    #<--- no self. 

def __init__(self, name, salary): self.name = name # Use class name to access class attribute if salary >= Employee.MIN_SALARY: self.salary = salary else: self.salary = Employee.MIN_SALARY
  • MIN_SALARY सभी इंस्टेंस में साझा है
  • क्लास एट्रिब्यूट डिफाइन करने के लिए self न उपयोग करें
  • वैल्यू एक्सेस करने के लिए ClassName.ATTR_NAME उपयोग करें
Python में ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग

क्लास-स्तर डेटा

class Employee:
  # Define a class attribute
  MIN_SALARY = 30000    

def __init__(self, name, salary): self.name = name # Use class name to access class attribute if salary >= Employee.MIN_SALARY: self.salary = salary else: self.salary = Employee.MIN_SALARY
emp1 = Employee("TBD", 40000)
print(emp1.MIN_SALARY)
30000
emp2 = Employee("TBD", 60000)
print(emp2.MIN_SALARY)
30000
Python में ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग

क्लास एट्रिब्यूट्स क्यों?

क्लास से संबंधित ग्लोबल कॉन्स्टेंट्स

 

  • एट्रिब्यूट्स के न्यूनतम/अधिकतम मान
  • आमतौर पर उपयोग मान व कॉन्स्टेंट्स, जैसे Circle क्लास के लिए pi
  • ...
Python में ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग

क्लास मेथड्स

  • मेथड्स पहले से "साझा" हैं: हर इंस्टेंस के लिए वही कोड
  • क्लास मेथड्स इंस्टेंस-स्तर डेटा उपयोग नहीं कर सकते
class MyClass:

  @classmethod                         # <---use decorator to declare a class method

def my_awesome_method(cls, args...): # <---cls argument refers to the class # Do stuff here # Can't use any instance attributes :(
MyClass.my_awesome_method(args...)
Python में ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग

वैकल्पिक कंस्ट्रक्टर्स

class Employee:
  MIN_SALARY = 30000
  def __init__(self, name, salary=30000):
      self.name = name
      if salary >= Employee.MIN_SALARY:
        self.salary = salary
      else:
        self.salary = Employee.MIN_SALARY
  • केवल एक __init__() हो सकता है

  @classmethod
  def from_file(cls, filename):
      with open(filename, "r") as f:
          name = f.readline()
      return cls(name)

  • ऑब्जेक्ट बनाने के लिए क्लास मेथड्स उपयोग करें
  • ऑब्जेक्ट लौटाने के लिए return उपयोग करें
  • cls(...) __init__(...) को कॉल करेगा
Python में ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग

वैकल्पिक कंस्ट्रक्टर्स

class Employee:
  MIN_SALARY = 30000
  def __init__(self, name, salary=30000):
      self.name = name
      if salary >= Employee.MIN_SALARY:
        self.salary = salary
      else:
        self.salary = Employee.MIN_SALARY

  @classmethod
  def from_file(cls, filename):
      with open(filename, "r") as f:
          name = f.readline()
      return cls(name)        

कर्मचारी का नाम वाली एक-पंक्ति टेक्स्ट फ़ाइल

# Employee() को सीधे बुलाए बिना एक employee बनाएँ
emp = Employee.from_file("employee_data.txt")
type(emp)
__main__.Employee
Python में ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग

अभ्यास करते हैं!

Python में ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग

Preparing Video For Download...