Skip to content

Latest commit

 

History

History

0x06-python-classes

img

Object Oriented Programming

OOP Meme

Intro

In this session, we will explore OOP in python. OOP is a totally new concept for all of you (especially those who think they know about it :)). It’s VERY important that you read at least all the material that is listed below.

Resources

  1. Object Oriented Programming - In English Please
  2. Introduction to OOP
  3. Properties vs. Setters vs. Getters
  4. Learn to program - part 9
  5. Python classes and objects
  6. OOP

Learning objectives

By the end of this session, you should be able to explain to anyone the following concepts without the help of Google.

  • What is OOP
  • “first-class everything”
  • What is a class
  • What is an object and an instance
  • What is the difference between a class and an object or instance
  • What is an attribute
  • What are and how to use public, protected and private attributes
  • What is self
  • What is a method
  • What is the special __init__ method and how to use it
  • What is Data Abstraction, Data Encapsulation, and Information Hiding
  • What is a property
  • What is the difference between an attribute and a property in Python
  • What is the Pythonic way to write getters and setters in Python
  • How to dynamically create arbitrary new attributes for existing instances of a class
  • How to bind attributes to object and classes
  • What is the __dict__ of a class and/or instance of a class and what does it contain
  • How does Python find the attributes of an object or class
  • How to use the getattr function

More info

Documentation is mandatory

Each module, class, and method must contain docstring as comments see example

Script requirements

  • Allowed editors: vi, vim, emacs
  • All your files will be interpreted/compiled on Ubuntu 20.04 LTS using python3 (version 3.8.5)
  • All your files should end with a new line
  • The first line of all your files should be exactly #!/usr/bin/python3
  • Your code should use the pycodestyle (version 2.8.*)
  • All your files must be executable
  • The length of your files will be tested using wc
  • All your modules should have a documentation (python3 -c 'print(__import__("my_module").__doc__)')
  • All your classes should have a documentation (python3 -c 'print(__import__("my_module").MyClass.__doc__)')
  • All your functions (inside and outside a class) should have a documentation (python3 -c 'print(__import__("my_module").my_function.__doc__)' and python3 -c 'print(__import__("my_module").MyClass.my_function.__doc__)')
  • A documentation is not a simple word, it’s a real sentence explaining what’s the purpose of the module, class or method (the length of it will be verified)