Реализация композиции (имеет отношение) в Python
Мы можем получить доступ к члену одного класса внутри класса, используя эти 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. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.