0% found this document useful (0 votes)
8 views6 pages

Object Oriented Programming Python - Week 1

Lesson 1

Uploaded by

ridzkhan.hassan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
8 views6 pages

Object Oriented Programming Python - Week 1

Lesson 1

Uploaded by

ridzkhan.hassan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 6

Introduction to OOP, Python Review

• What is OOP?: Object-Oriented Programming is a coding paradigm centered around 'objects' that bundle
data and behavior. It enhances modularity and reusability in software design.

• Four Pillars of OOP: Encapsulation, Inheritance, Polymorphism, and Abstraction form the foundation of
OOP, enabling complex and scalable software architectures.

• Why Python for OOP?: Python's simple syntax and dynamic typing make it an ideal language for
implementing OOP concepts, especially for beginners and rapid development.

• Classes and Objects in Python: Python uses classes as templates for creating objects. Each object is an
instance with its own attributes and methods, supporting code reuse and clarity.

• Quick Python Refresher: Covers core elements like variables, loops, functions, and conditionals, ensuring
foundational knowledge is solid before diving deeper into OOP.
Understanding Encapsulation in Python

• Encapsulation Defined: Encapsulation is the practice of restricting direct access to some of an object's
components, promoting modularity and data protection.

• Public vs. Private Members: Python uses naming conventions (like _var or __var) to distinguish between
public, protected, and private attributes or methods.

• Getters and Setters: Encapsulation often uses getter and setter methods to access and modify private
variables safely and predictably.

• Why It Matters: Encapsulation prevents unintended interference, ensures code security, and enhances
object integrity by hiding implementation details.

• Python Property Decorators: The @property decorator in Python offers a Pythonic way to implement
encapsulation without explicit getters/setters.
Inheritance: Building Hierarchies

• What is Inheritance?: Inheritance allows a class (child/subclass) to acquire properties and behaviors from
another class (parent/superclass), enabling code reuse.

• Syntax of Inheritance in Python: In Python, inheritance is declared by passing the parent class as a
parameter in the class definition, e.g., class Dog(Animal):

• Types of Inheritance: Python supports single, multiple, multilevel, hierarchical, and hybrid inheritance,
each offering different ways to structure relationships.

• The Role of `super()`: The `super()` function allows calling methods of the parent class, ensuring proper
initialization and method overriding behavior.

• Benefits and Pitfalls: Inheritance promotes reuse and hierarchy but can lead to complex dependencies if
overused or misstructured.
Polymorphism: One Interface, Many Forms

• What is Polymorphism?: Polymorphism allows different classes to be treated through the same interface,
enabling flexibility and scalability in design.

• Types of Polymorphism: Python supports compile-time (via method overloading) and runtime (via
method overriding) polymorphism, though true overloading is limited.

• Duck Typing in Python: Python’s dynamic typing enables duck typing: if it walks like a duck and quacks
like a duck, it’s treated like one.

• Function Overriding: Subclasses can override parent class methods to implement specialized behavior
while retaining the same method signature.

• Polymorphism in Action: Using the same method name with different behaviors across classes simplifies
interfaces and increases code reusability.
Abstraction: Simplifying Complexity

• What is Abstraction?: Abstraction involves hiding the complex implementation details and showing only
the essential features to the user.

• Benefits of Abstraction: It reduces complexity, enhances code readability, and isolates change to specific
parts of the program.

• Abstract Classes in Python: Python supports abstraction via the `abc` module and abstract base classes,
which define interfaces that subclasses must implement.

• Interfaces and Responsibilities: Abstraction helps define clear interfaces and responsibilities, allowing
different classes to share consistent expectations.

• Real-World Example: Think of a car: drivers use pedals and a wheel without knowing the mechanics under
the hood—this is abstraction in action.
Python Classes: Syntax & Structure

• Defining a Class: A class is defined using the `class` keyword, followed by a name and an optional base
class: `class MyClass:`

• Attributes and Methods: Attributes store object data, while methods define behavior. The first argument
of methods in a class is conventionally `self`.

• Instantiating Objects: Objects are created by calling the class like a function: `obj = MyClass()` creates a
new instance.

• Instance vs. Class Variables: Instance variables are unique to each object, while class variables are shared
across all instances.

• Docstrings and Comments: Python supports inline documentation using triple quotes for docstrings to
describe class purpose and usage.

You might also like