3.1 introduction#

The first thing to understanding in object oriented programming in python is the concept of type.

In python everything is an object and it has a type. The type of an object tells, what kind of characteristics it has, or what kind of operations it can perform or can be performed on it.

a_int = 23
print(type(a_int))
<class 'int'>
a_float = 2.5
print(type(a_float))
<class 'float'>
a_name = 'Ali'
print(type(a_name))
<class 'str'>

Even the functions have their types

def print_name(the_name):
    print('name is: ', the_name)

print(type(print_name))
<class 'function'>
import math

print(type(math))
<class 'module'>
looters = ['zardari', 'nawaz', 'establishment']
print(type(looters))
<class 'list'>
insan = {'name': 'ali', 'age': 30, 'weight': 72.5}
print(type(insan))
<class 'dict'>
for key, val in insan.items():
    print(type(key), type(val))
<class 'str'> <class 'str'>
<class 'str'> <class 'int'>
<class 'str'> <class 'float'>

Since insan is an instance of class dict, therefore we can access all functions (methods) of dict class through its instance insan. These methods include pop or update etc.

insan.pop('weight')
72.5
print(insan)
{'name': 'ali', 'age': 30}

We can always check the methods and attributes available for the instance of a class by dir(object)

print(dir(insan))
['__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__ior__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__or__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__ror__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']

Any method/attribute that starts with single or double underscore “_” is not for public use. Considering this, we can use any attribute/method of an insan which we printed above. For example, we can do insan.update or insan.vlaues or insan.keys etc. For methods, we have to call them like insan.values() and for other attributes, we don’t need to call them.

print(dir(a_name))
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'removeprefix', 'removesuffix', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']

The attributes of a_name are different as compared to those of insan. Therefore, we can not do insan.startswith() or a_name.values().

Question: What methods/functions can be applied on a_int and a_float objects defined at the start of this lesson? Give examples of five such functions by applying them.

Total running time of the script: ( 0 minutes 0.004 seconds)

Gallery generated by Sphinx-Gallery