# Python 02 ###### tags: `mobile-development` `backend` Now let's talk about classes and objects : ## Class in Python: A class is a blueprint for the object. ```python=0 class Parrot: pass ``` ## Objects in Python: An object (instance) is an instantiation of a class. When class is defined, only the description for the object is defined. Therefore, no memory or storage is allocated. ```python=0 obj = Parrot() ``` Here, obj is an object of class Parrot. ```python=0 class Parrot: #class attribute species = "bird" #instance attribute def __init__(self, name, age): self.name = name self.age = age #instantiate the Parrot class blu = Parrot("Blu", 10) woo = Parrot("Woo", 15) #access the class attributes print("Blu is a {}".format(blu.__class__.species)) print("Woo is also a {}".format(woo.__class__.species)) #access the instance attributes print("{} is {} years old".format( blu.name, blu.age)) print("{} is {} years old".format( woo.name, woo.age)) ``` Output ``` Blu is a bird Woo is also a bird Blu is 10 years old Woo is 15 years old ``` ## Methods in Python: Methods are functions defined inside the body of a class. They are used to define the behaviors of an object. ```Python=0 class Parrot: #instance attributes def __init__(self, name, age): self.name = name self.age = age #instance method def sing(self, song): return "{} sings {}".format(self.name, song) def dance(self): return "{} is now dancing".format(self.name) #instantiate the object blu = Parrot("Blu", 10) #call our instance methods print(blu.sing("'Happy'")) print(blu.dance()) ``` Output ``` Blu sings 'Happy' Blu is now dancing ``` ## Inheritance in Python: Inheritance is a way of creating a new class for using details of an existing class without modifying it. The newly formed class is a derived class (or child class). Similarly, the existing class is a base class (or parent class). ```Python=0 #parent class class Bird: def __init__(self): print("Bird is ready") def whois_this(self): print("Bird") def swim(self): print("Swim faster") #child class class Penguin(Bird): def __init__(self): #call super() function super().__init__() print("Penguin is ready") def whois_this(self): print("Penguin") def run(self): print("Run faster") peggy = Penguin() peggy.whois_this() peggy.swim() peggy.run() ``` Output ``` Bird is ready Penguin is ready Penguin Swim faster Run faster ``` # File operations and context managemnet ## File operations ### Opening Files in Python Python has a built-in open() function to open a file. This function returns a file object, also called a handle, as it is used to read or modify the file accordingly. ```python=0 f = open("test.txt") #open file in current directory f = open("C:/Python38/README.txt") #specifying full path ``` ```python=0 f = open("test.txt") #equivalent to 'r' or 'rt' f = open("test.txt",'w') #write in text mode f = open("img.bmp",'r+b') #read and write in binary mode ``` ```python=0 f = open("test.txt", encoding = 'utf-8') #perform file operations f.close() ``` ```python=0 try: f = open("test.txt", encoding = 'utf-8') # perform file operations except Error as e: print('error occured') finally: f.close() ``` ## context management ```python=0 with open("test.txt", encoding = 'utf-8') as f: # perform file operations ``` ```python=0 with open("test.txt",'w',encoding = 'utf-8') as f: f.write("my first file\n") f.write("This file\n\n") f.write("contains three lines\n") ```