From 4ef55e4d52e06d071354bd7f6f6ba0a86243fc0e Mon Sep 17 00:00:00 2001 From: Simeon Simeonov Date: Sat, 10 Sep 2022 18:19:22 +0200 Subject: Add reveal.js/dist/theme/jupyter.css and reveal.js/python-oo.html --- reveal.js/python-oo.html | 145 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 145 insertions(+) create mode 100644 reveal.js/python-oo.html (limited to 'reveal.js/python-oo.html') diff --git a/reveal.js/python-oo.html b/reveal.js/python-oo.html new file mode 100644 index 0000000..5279993 --- /dev/null +++ b/reveal.js/python-oo.html @@ -0,0 +1,145 @@ + + + + + Object-oriented programming in Python + + + + + + + + + + + + + + + +
+ + +
+ +
+

Object-oriented programming in Python

+

Data Engineering @ Statnett

+
+

Simeon Simeonov

+
+ +
+

Goals

+
+
    +
  • Present the Python programming language in a different way than https://docs.python.org

  • +
  • Avoid information overload

  • +
  • Use examples and interaction rather than documents and slides

  • +
+
+ +
+

Preliminary plan

+
+
    +
  • Basics: About the language, the Python eco-system, types, modules, functions, scopes, decorators, string formatting

  • +
  • Object-oriented programming in Python: How Python "really works"

  • +
  • Control flow: if / for / while / try, iterators, "tactical programming" tips

  • +
  • A brief tour through Python's standard library

  • +
  • Code design and best practices: How to design your code

  • +
+
+ +
+

What is object-oriented programming?

+
+

Object-oriented programming does not mean using an object-oriented programming language.

+

It is rather a programming paradigm based on the concept of object, as well as on some general principles and best practices aiming at:

+
    +
  • improving readability

  • +
  • improving re-usability

  • +
  • improving modularity

  • +
  • providing foundation for a more intuitive design

  • +
+
+ +
+

General principles

+
+

The following four concepts / principles are presented in most object-oriented programming books:

+
    +
  • separate and hide "private" details from the outside world and / or child (inheriting) functionality (encapsulation)

  • +
  • separate the interface from its implementation (abstraction)

  • +
  • inherit and extend / adapt existing functionality, through "is-a" relationship hierarchy (inheritance)

  • +
  • execute different code / functionality based on the object's place in the hierarchy (polymorphism)

  • +
+
+ +
+

Building blocks and definitions

+
+

Note: "Lacking universally accepted terminology to talk about classes, I will make occasional use of Smalltalk and C++ terms." - The Python tutorial (https://docs.python.org)

+

When talking about object-oriented programming, the following building blocks are involved:

+
    +
  • class - a blueprint / template for creating objects

  • +
  • object - an instance of a class that may contain its own attributes as well as references to its class' attributes

  • +
  • attribute - variable, property, function defined in the class and present in its instances

  • +
  • class variable - attribute of which a single copy exists, regardless of how many instances of the class exist

  • +
  • object / instance variable - attribute for which each instantiated object of the class has a separate copy, or instance

  • +
  • method - member function - function that is an attribute

  • +
+
+ +
+

The object-oriented world of Python

+
+

Some additional concepts and definitions are introduced in Python, as well as in some other programming languages:

+
    +
  • metaclass - a class whose instances are classes

  • +
  • property - attribute that provides a flexible mechanism to read, write, or compute the value of a "private" attribute

  • +
  • type - old C object-oriented term, now (in Python 3) considered to be the same as class

  • +
+

As is true for modules, classes partake of the dynamic nature of Python: they are created at runtime, and can be modified further after creation.

+
+ +
+

The object-oriented world of Python (cont...)

+
+

The <

+
    +
  • metaclass - a class whose instances are classes

  • +
  • property - attribute that provides a flexible mechanism to read, write, or compute the value of a "private" attribute

  • +
  • type - old C object-oriented term, now (in Python 3) considered to be the same as class

  • +
+
+ +
+
+ + + + + + + + + + + -- cgit v1.3