Skip to main content

Is-A and Has-A relationships in python

 



In object-oriented programming, the concept of IS-A is a totally based on Inheritance, which can be of two types Class Inheritance or Interface Inheritance. It is just like saying "A is a B type of thing". For example, Apple is a Fruit, Car is a Vehicle etc. Inheritance is uni-directional. For example, House is a Building. But Building is not a House.


#Is-A relationship --> By Inheritance


class A:
  def __init__(self):
    self.b=10
  def mym1(self):
    print('Parent method')

class B(A):
  def mym2(self):
    print('Child method')


d = B()

d.mym1()

#output: Parent method

d.mym2()

#output: Child method


HAS-A Relationship: 

Composition(HAS-A) simply mean the use of instance variables that are references to other objects. For example Maruti has Engine, or House has Bathroom.

Let’s understand these concepts with an example of Car class.

car class

# Has-A relationship --> By Composition

class Engine:
  def __init__(self):
    self.b = 20
  def myEngine(self):
    print('This is Engine class')

class Car:
  def __init__(self):
    self.engine = Engine()
  def mycar(self):
    print('Car use Engine class functionality')
    print(self.engine.b)
    self.engine.myEngine()



a = Car()
a.mycar()

Output:

Car use Engine class functionality 20 This is Engine class



A program to show differentiation between Is-A and Has-A



class Car:
  def __init__(self,name,colour):
    self.name = name
    self.colour = colour
  def Printinfo(self):
    print('car name is {},colour is {}'.format(self.name,self.colour))

class Person:
  def __init__(self,name,age):
    self.name = name
    self.age = age
  def breathe(self):
    print('breathing')

class Employee(Person):
  def __init__(self,name,age,empno,car):
    super().__init__(name,age)
    self.empno = empno
    self.car = car #Has-A
  def empinfo(self):
    print('name is {},age is {},empno is {}'.format(self.name,self.age,self.empno)) #is-A
  def empcarinfo(self):
    print('car details:')
    self.car.Printinfo()



c = Car('swift','red')

emp1 = Employee('tom',24,14356,c)

emp1.empinfo()

name is tom,age is 24,empno is 14356

emp1.empcarinfo()

car details: car name is swift,colour is red

emp1.breathe()

breathing

Comments

Popular posts from this blog

Magic Methods in Python

  What Are Dunder Methods ? In Python, special methods are a set of predefined methods you can use to enrich your classes.  They are easy to recognize because they start and end with double underscores, for example  __init__  or  __str__ . Dunder methods let you emulate the behavior of built-in types.  For example, to get the length of a string you can call  len('string') . But an empty class definition doesn’t support this behavior out of the box: These “dunders” or “special methods” in Python are also sometimes called “magic methods.” class NoLenSupport : pass >>> obj = NoLenSupport () >>> len ( obj ) TypeError : "object of type 'NoLenSupport' has no len()" To fix this, you can add a  __len__  dunder method to your class: class LenSupport : def __len__ ( self ): return 42 >>> obj = LenSupport () >>> len ( obj ) 42 Object Initialization:  __init__ "__init __ " is a reserv

Architechture of Kubernetes

  Kubernetes Architecture and Components: It follows the client-server architecture, from a high level, a Kubernetes environment consists of a  control plane (master) , a  distributed storage system  for keeping the cluster state consistent ( etcd ), and a number of  cluster nodes (Kubelets). We will now explore the individual components of a standard Kubernetes cluster to understand the process in greater detail. What is Master Node in Kubernetes Architecture? The Kubernetes Master (Master Node) receives input from a CLI (Command-Line Interface) or UI (User Interface) via an API. These are the commands you provide to Kubernetes. You define pods, replica sets, and services that you want Kubernetes to maintain. For example, which container image to use, which ports to expose, and how many pod replicas to run. You also provide the parameters of the desired state for the application(s) running in that cluster. API Server: The  API Server  is the front-end of the control plane and the only