Giter Club home page Giter Club logo

python-and-oop's Introduction

Object Oriented Programming in Python

  1. Classes
  2. Instances, Instance methods, Instance attributes
  3. Class attributes
  4. The init constructor
  5. Inheritance (Inheriting {attributes,methods,constructors etc..})
  6. Encapsulation
  7. Polymorphism
  8. Instance methods
  9. Multiple Inheritance and method/attribute lookup
  10. Method Resolution Order (MRO)
  11. Decorators
  12. Static methods
  13. Class methods

NOTES


01. Classes

Classes are the building blocks in Object Oriented Programming.

Classes can be seen as blueprints from which you create your Instances.


02. Instances, Instance methods, Instance attributes


03. Class attributes

Attributes or methods specific to a class are called Class attributes

Example:

class MyClass(object):
    value = 10
    
    def __init__(self):
        pass

Here value is a class attribute. These are used when certain values need to be set outside a function.


04. The init constructor

The init() constructor is a magic method which gets called when a class is instantiated.

Any attributes set under the init() constructor will be instantiated at the time of instance creation.


05. Inheritance (Inheriting {attributes,methods,constructors etc..})


06. Encapsulation


07. Polymorphism


08. Instance methods


09. Multiple Inheritance and method/attribute lookup

  • Any class can inherit from other classes.
  • Any python class can inherit from multiple classes at the same time.
  • The class that inherits another class is called the Base/Child class.
  • The class being inherited by the Child class is called the Parent class.
  • The child class inherits any methods and attributes defined in the parent classes.
  • Python uses a depth-first method resolution order (MRO) to fetch methods.
  • When two classes inherits from the same class, from Python2.3 onwards, the MRO omits the first occurrence of the class.
  • This new MRO lookup method applies from Python2.3, and is for the new-style classes. NOTE: New style classes inherits from the 'object' parent class.

10. Method Resolution Order (MRO)

  • Python has a method lookup order, called MRO (Method Resolution Order)

  • The MRO path can be printed to stdout using print <class-name>.mro()

  • Python, by default, uses a depth-first lookup path for MRO.

  • ie.. Imagine you have four classes, A, B, C, D.

    1. You instance is created from D.
    2. D inherits from B and C
    3. B inherits from A.
    4. Both C and A has a method with the same name.
    5. Since python follows a depth-first MRO, the method is called from A

REFERENCE: Check the code examples in:

  • 14-multiple-inheritance-1.py
  • 15-multiple-inheritance-2.py

In some cases, the inheritance can get quite cumbersome when multiple classes inherit from the same classes, in multiple levels.

NOTE : From Python2.3, the MRO has changed slightly in order to speed up the method lookups.

The MRO lookup now skips/omits the initial occurrences of classes which occurs multiple time in the lookup path.

  • Example:
    1. Four classes, A, B, C, D.
    2. D inherits from both B and C
    3. B inherits from A
    4. C inherits from A
    5. Both C and A contains a similar named method.
    6. Your instance in created from class D.
    7. You try a lookup for the method which is named both in A and C.
    8. The usual lookup should be D -> B -> A -> C -> A a. Hence since the method exists in A and C, it should return from A. b. But since the class A is occurring twice and due to the new MRO method, the lookup will be D -> B -> C -> A.
    9. The lookup should return the method from class C, rather than A.

REFERENCE: Check the code example in:

  • 16-multiple-inheritance-3.py

11. Decorators


12. Static methods


13. Class methods


14. Magic methods

Magic methods

python-and-oop's People

Contributors

awgeezrick avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.