Working with python classes and objects
Python is dynamically typed programming language and also it is “Functional Programming” and “Object-Oriented Programming”.
What is Functional Programming?
In Functional Programming, we defined a function with the required parameters
and make a call to function whenever it is required.
Example: Suppose we want to get a list of students with marks and display them
def get_students(): students = [ { 'fname' : 'Omkar', 'lname' : 'J', 'marks' : [ { 'subject_name' : 'Maths', 'marks_secured' : '70', }, { 'subject_name' : 'Science', 'marks_secured' : '60', }, ], }, { 'fname' : 'Rakesh', 'lname' : 'K', 'marks' : [ { 'subject_name' : 'Maths', 'marks_secured' : '56', }, { 'subject_name' : 'Science', 'marks_secured' : '47', }, ], }, ] return students def show_students_marks(): students_list = get_students() for i in students_list: print("\nMarks secured by {} {} in exam".format(i['fname'],i['lname'])) if len(i['marks']) > 0: print(" Subject Name -|- Marks Scored") for j in i['marks']: print(" {} -|- {} ".format(j['subject_name'],j['marks_secured'])) show_students_marks() #PYTHON OUTPUT Marks secured by Omkar J in exam Subject Name -|- Marks Scored Maths -|- 70 Science -|- 60 Marks secured by Rakesh K in exam Subject Name -|- Marks Scored Maths -|- 56 Science -|- 47
In the above example, we are using functions to get student list and display marks.
This is a small example in the vast paradigm/patterns of functional programming.
What is Class in Programming?
Classes can be defined as a blueprint/representation of a particular code which deals with the specific context. It is a fundamental part of creating objects.
What Is Object-Oriented Programming?
In simple words, objects are a representation of a class or objects represent a particular class. Objects are used to create the instance/clone of class.
The above same example will be executed but with Object-Oriented Method.
class Student(): def get_students(self): students = [ { 'fname' : 'Omkar', 'lname' : 'J', 'marks' : [ { 'subject_name' : 'Maths', 'marks_secured' : '70', }, { 'subject_name' : 'Science', 'marks_secured' : '60', }, ], }, { 'fname' : 'Rakesh', 'lname' : 'K', 'marks' : [ { 'subject_name' : 'Maths', 'marks_secured' : '56', }, { 'subject_name' : 'Science', 'marks_secured' : '47', }, ], }, ] return students def show_students_marks(self): students_list = self.get_students() for i in students_list: print("\nMarks secured by {} {} in exam".format(i['fname'],i['lname'])) if len(i['marks']) > 0: print(" Subject Name -|- Marks Scored") for j in i['marks']: print(" {} -|- {} ".format(j['subject_name'],j['marks_secured'])) student_obj = Student() student_obj.show_students_marks() #PYTHON OUTPUT Marks secured by Omkar J in exam Subject Name -|- Marks Scored Maths -|- 70 Science -|- 60 Marks secured by Rakesh K in exam Subject Name -|- Marks Scored Maths -|- 56 Science -|- 47
Creating a class in Python
To create a class in python use class
keyword followed by Class Name. It is recommended to use
the first letter of the class name is in a capital case. General classes are nothing but a group of properties and
methods.
class Person: def show_name(): print("name")
Creating Object in Python
person1 = Person() person2 = Person()
Adding Properties to class and creating Objects of class
Properties are just variable which has a class level or function-level scope.
Example
class Person: name = "Suzan" def show_name(): print("My name is {}".format(self.name))
In this example the class property is name
which can be accessed inside method using self.name
.
Variables with class-level scope
class TestClass: age=10 # Variable with class level scope i.e its value can be accessed inside any function(Method()) in the class def get_age(self): print('age : {}'.format(self.age)) c=TestClass() #Class object named `c` created c.get_age() # Accessing method `get_age()` from object using dot(.) operator #PYTHON OUTPUT age : 10
In the above example, we have created a class named TestClass
specified with property age
.
You can notice that in get_age(self)
we are calling age
property using self
keyword.
The self
keyword in python refers to the class itself i.e in this case self is nothing but class TestClass
and we are using it are paramter[argument] to the function inside the class and there is no need to call self
keyword while calling class function using objects.
__init__()
a method in python is a special function which is invoked when a new class is created.
We can use this special method to set the value of properties inside the class.
class NewClass: users_list=[] def __init__(self, name, age): self.name=name self.age=age user = { 'name' : self.name, 'age' : self.age, } self.users_list.append(user) def show_details(self): return self.users_list a=NewClass('Rake', 15) a=NewClass('Jonny', 18) a=NewClass('Sam', 21) print(a.show_details()) #PYTHON OUTPUT [{'name': 'Rake', 'age': 15}, {'name': 'Jonny', 'age': 18}, {'name': 'Sam', 'age': 21}]
The above example gives us a bit of idea of how __init__()
method works.
We have specified 2 parameters name and age in __init__()
the method. When we create an object for that class
we must pass a value for those 2 values this will append new values inside users_list
.
Accessing properties of Object
Consider the above example the `users_list` is the property in the Object. To accessing it simple call object_name.property
print(a.users_list) #PYTHON OUTPUT [{'name': 'Rake', 'age': 15}, {'name': 'Jonny', 'age': 18}, {'name': 'Sam', 'age': 21}]
Modify properties of Object
a.users_list.append({"name" : "Arnold", "age" : 25}) print(a.users_list) #PYTHON OUTPUT [{'name': 'Rake', 'age': 15}, {'name': 'Jonny', 'age': 18}, {'name': 'Sam', 'age': 21}, {'name': 'Arnold', 'age': 25}]
Removing Properties from Objects
Use del
keyword to delete properties of objects
del a.users_list