Interfaces

Intermediate Object-Oriented Programming in Python

Jake Roach

Data Engineer

Interfaces

एक खास तरह की class जो सिर्फ abstract methods से बनी होती है और उस interface को implement करने वाली classes के साथ एक contract बनाती है

  • Abstract methods अनिवार्य
  • Method definitions का ढाँचा
  • Parameters का मिलना ज़रूरी नहीं
  • Formal या informal

$$

$$

चलें, informal interfaces से शुरू करते हैं!

तीन abstract methods वाले एक Python interface का चित्र.

Intermediate Object-Oriented Programming in Python

Duck typing के साथ informal interfaces

class Course:
    def assign_homework(self, assignment_number, due_date):
        # Typically, the pass keyword will be used when creating an interface
        pass  

    def grade_assignment(self, assignment_number):
        pass
  • Duck typing
  • assign_homework() और grade_assignment() abstract methods
Intermediate Object-Oriented Programming in Python

Duck typing के साथ informal interfaces

class ProgrammingCourse:
    def __init__(self, course_name):
        self.course_name = course_name

    def assign_homework(self, due_date):
        # Some implementation of assign_homework here...

    def grade_assignment(self, assignment_number):
        # Some implementation of grade_assignment here...
Intermediate Object-Oriented Programming in Python

Formal interfaces with ABC, @abstractmethod

from abc import ABC, abstractmethod

class Course(ABC):    
    @abstractmethod
    def assign_homework(self, assignment_number, due_date):
        pass

    @abstractmethod
    def grade_assignment(self, assignment_number):
        pass

Formal interfaces abstract base classes से कैसे अलग हैं?

Intermediate Object-Oriented Programming in Python

Interfaces बनाम Abstract Base Classes

Interfaces

  • Implement करने वाली classes के साथ एक "contract" तय करते हैं
  • "Must-do"
  • Formal और informal
  • केवल abstract methods (कोई concrete method नहीं)
  • लगभग समान classes

Abstract base classes

  • समान विशेषताओं वाली classes के लिए "blueprint" बनाते हैं
  • "Is-a"
  • आम तौर पर केवल formal
  • Abstract और concrete methods का मिश्रण
  • दिखने-लगने में समान classes
Intermediate Object-Oriented Programming in Python

Formal interface implement करना

class ProgrammingCourse(Course):
    def __init__(self, course_name):
        self.course_name = course_name

    def assign_homework(self, due_date):
        # Some implementation of assign_homework here...

    def grade_assignment(self, assignment_number):
        # Some implementation of grade_assignment here...

intermediate_oop = ProgrammingCourse("Intermediate Object-Oriented Programming")
Intermediate Object-Oriented Programming in Python

Formal interface implement करने में चूक

class ProgrammingCourse(Course):
    def __init__(self, course_name):
        self.course_name = course_name

    def assign_homework(self, due_date):
        # Some implementation of assign_homework here...

intermediate_oop = ProgrammingCourse("Intermediate Object-Oriented Programming")
 ...
    intermediate_oop = ProgrammingCourse("Intermediate Object-Oriented Programming")
TypeError: Can't instantiate abstract class ProgrammingCourse with abstract method
    grade_assignment
Intermediate Object-Oriented Programming in Python

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

Intermediate Object-Oriented Programming in Python

Preparing Video For Download...