Classes and Objects
Classes:
1. Defining a Class:
- Using the class keyword to define a class.
- Creating a blueprint for objects.
2. Attributes (Properties):
- Defining instance attributes to store data.
- Attributes hold the state of an object.
3. Methods:
- Defining methods to encapsulate behavior.
- Methods define the actions an object can perform.
4. Initializer (__init__):
- Using the __init__ method to initialize attributes during object creation.
- Constructors are called when objects are instantiated.
5. Class and Instance Attributes:
- Differentiating between attributes that belong to the class and instances.
- Class attributes are shared among all instances.
Objects:
1. Creating Objects:
- Instantiating objects from a class.
- Objects are instances of a class.
2. Accessing Attributes:
- Using dot notation to access attributes.
- object.attribute to access instance attributes.
3. Calling Methods:
- Invoking methods on objects.
- object.method() to call a method.
4. Initializer Usage:
- Providing arguments to the __init__ method during object creation.
- Initializing object attributes.
5. Multiple Objects:
- Creating multiple instances of a class.
- Each object maintains its own state.
Using Classes and Objects:
1. Creating and Using Instances:
- Creating instances of a class.
- Setting attributes and calling methods.
2. Modifying Attributes:
- Changing attribute values using methods.
- Encapsulating attribute changes.
3. Encapsulation:
- Using private attributes with a naming convention (e.g., _attribute).
- Encapsulating data for controlled access.
4. Inheritance and Subclasses:
- Creating subclasses that inherit attributes and methods from a superclass.
- Extending and customizing behavior in subclasses.
5. Method Overriding:
- Overriding methods in subclasses to customize behavior.
- Using the super() function to call overridden methods.
6. Using Class and Instance Attributes:
- Understanding the difference between class and instance attributes.
- Accessing class attributes using both class and instance.
Example:
Let's illustrate these concepts with a simple example:
class Dog: def __init__(self, name, age): self.name = name self.age = age def bark(self): print(f"{self.name} says woof!")
# Creating instances of the Dog class dog1 = Dog("Buddy", 3) dog2 = Dog("Max", 5)
# Accessing attributes and calling methods print(f"{dog1.name} is {dog1.age} years old.") dog1.bark()
print(f"{dog2.name} is {dog2.age} years old.") dog2.bark()
|