When you have multiple object in you program, it often looks messy with
different object name being used to call corresponding methods. Let’s see with
an example:
class Dog:
def __init__(self,name):
self.talents=[]
self.name=name
def add_talent(self,talent):
self.talents.append(talent)
dog_obj1 = Dog('Peddy')
dog_obj2 = Dog('Magnet')
dog_obj1.add_talent('Black Plet')
dog_obj1.add_talent('Fisher Dog')
dog_obj2.add_talent('Guard Dog')
dog_obj2.add_talent('Happy Eater')
print("Talent of Peddy")
print(dog_obj1.talents)
print("\nTalent of Magnet")
print(dog_obj1.talents)
def __init__(self,name):
self.talents=[]
self.name=name
def add_talent(self,talent):
self.talents.append(talent)
dog_obj1 = Dog('Peddy')
dog_obj2 = Dog('Magnet')
dog_obj1.add_talent('Black Plet')
dog_obj1.add_talent('Fisher Dog')
dog_obj2.add_talent('Guard Dog')
dog_obj2.add_talent('Happy Eater')
print("Talent of Peddy")
print(dog_obj1.talents)
print("\nTalent of Magnet")
print(dog_obj1.talents)
#Output
Talent of Peddy
['Black Plet', 'Fisher
Dog']
Talent of Magnet
['Black Plet', 'Fisher
Dog']
here above if you see, we have Dog class which has a constructor which initialize
two instance object talents (list obj) and name and we have one instance method add_talent
which add the talent of Dog object.
In later part of code, we have declared two object dog_obj1(‘Peddy’) and
dog_obj2(‘Magnet’), and then we are calling add_talent method to add talent of Peddy
and Magnet.
The code all ok, but just imagine when you have plenty of object in you
program, then your program may look quite messy with different objects name.
So what could be the way?
Simple, simple create a dictionary with list of object key value pair
and access each object instance variable and method with dictionary object key
value. Look at below code snippet
# creating dictionary of
Dog
obj_dict={
'Peddy':dog_obj1,
'Magnet':dog_obj2
}
# Accessing instance valriable of class
print(obj_dict['Peddy'].talents)
print(obj_dict['Magnet'].talents)
# To add new talent of Paddy, it would be qutie simple"
obj_dict['Peddy'].add_talent('Wolf mound')
#Printing talent of Peddy
print(obj_dict['Peddy'].talents)
obj_dict={
'Peddy':dog_obj1,
'Magnet':dog_obj2
}
# Accessing instance valriable of class
print(obj_dict['Peddy'].talents)
print(obj_dict['Magnet'].talents)
# To add new talent of Paddy, it would be qutie simple"
obj_dict['Peddy'].add_talent('Wolf mound')
#Printing talent of Peddy
print(obj_dict['Peddy'].talents)
#OUTPUT
['Black Plet', 'Fisher
Dog']
['Guard Dog', 'Happy
Eater']
['Black Plet', 'Fisher
Dog', 'Wolf mound']
So here we created a dictionary object obj_dict with list of Dog class object
with key value pair Peddy and Magnet. There after we are accessing the Peddy
and Magnet talent with dictionary key
obj_dict['Peddy'].talents
obj_dict['Magnet'].talents
Now if we want to add new talent of Peddy then it quite simple:
obj_dict['Peddy'].add_talent('Wolf mound')
This way, your program looks very less messy and much readable.
Enjoy pythonic way J