Реализация композиции (имеет отношение) в Python

Опубликовано: 9 Апреля, 2022

Мы можем получить доступ к члену одного класса внутри класса, используя эти 2 концепции:

  • По составу (имеет отношение)
  • По наследству (родство)

Здесь мы изучим, как использовать реализацию Has-A Relation в Python.

Реализация композиции в Python

Используя имена классов или создав объект, мы можем получить доступ к члену одного класса внутри другого класса.

Пример:

class Engine:
   # engine specific functionality
   """
   """
   """

class Car:
   e = Engine()
   e.method1()
   e.method2()
   """
   """

В приведенном выше примере класс Car имеет ссылку на класс Engine. Здесь, внутри класса Car, мы также можем создавать разные переменные и методы. Используя ссылку на объект класса Engine внутри класса Car, мы можем легко получить доступ к каждому члену класса Engine внутри класса Car.

Example 1: Executable code for composition

Python3

class Employee:
 
    # constructor for initialization
    def __init__(self, name, age):
        self.name = name
        self.age = age
 
    # instance method
    def emp_data(self):
        print("Name of Employee : ", self.name)
        print("Age of Employee : ", self.age)
 
 
class Data:
    def __init__(self, address, salary, emp_obj):
        self.address = address
        self.salary = salary
 
        # creating object of Employee class
        self.emp_obj = emp_obj
 
    # instance method
    def display(self):
 
        # calling Employee class emp_data()
        # method
        self.emp_obj.emp_data()
        print("Address of Employee : ", self.address)
        print("Salary of Employee : ", self.salary)
 
# creating Employee class object
emp = Employee("Ronil", 20)
 
# passing obj. of Emp. class during creation
# of Data class object
data = Data("Indore", 25000, emp)
 
# call Data class instance method
data.display()


Выход
 Имя сотрудника: Ронил
Возраст сотрудника: 20
Адрес сотрудника: Индор
Заработная плата сотрудника: 25000

В приведенном выше примере у нас есть 2 класса «Сотрудник» и «Данные» . Внутри конструктора класса Data мы создаем объект класса Employee, благодаря которому мы можем легко получить доступ к членам класса Employee. Внутри класса Data объект класса Employee становится переменной экземпляра класса «Data» . Мы создаем объекты внутри конструктора, поэтому всякий раз, когда мы будем вызывать какой-либо метод или переменную класса Employee, мы должны использовать ключевое слово self. Мы можем заменить «self.emp_obj» на «Employee», но, используя имя класса Employee, мы можем получить доступ только к статическому методу или переменной класса Employee.

Пример 2: Еще один простой пример использования композиции

 

Python3

class A:
    def __init__(self):
        print("Class - A Constructor")
 
    def m1(self):
        print("M1 method of Class - A.")
 
 
class B:
    def __init__(self):
        print("Class - B Constructor.")
 
    # instance method
    def m2(self):
 
        # creating object of class A inside
        # B class instance method
        obj = A()
 
        # calling m1() method of class-A
        obj.m1()
        print("M2 method of Class - B.")
 
 
# creating object of class-B
obj = B()
 
# calling B class m2() method
obj.m2()

Выход

 Класс - B Конструктор.
Класс - Конструктор
Метод М1 Класса - А.
Метод М2 Класса - Б.

Здесь, в приведенном выше примере, мы создаем объект класса A внутри метода экземпляра класса B, который является методом m2 (). Таким образом, поток выполнения будет Первоначально, объект класса B будет создан, поэтому конструктор класса B будет выполнен. Теперь объект класса B вызывает метод m2 (), поэтому курсор перейдет к методу m2 () класса B. Внутри метода m2 () класса B создается объект класса A, поэтому конструктор класса A будет выполняется, то метод m1 () класса A будет выполнен, наконец, он напечатает последний оператор метода m2 () и конец выполнения здесь.

Внимание компьютерщик! Укрепите свои основы с помощью базового курса программирования Python и изучите основы.

Для начала подготовьтесь к собеседованию. Расширьте свои концепции структур данных с помощью курса Python DS. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.