Python > Object-Oriented Programming (OOP) in Python > Classes and Objects > Creating Objects (Instantiation)
Instantiation with Default Attribute Values
This snippet shows how to create objects with default values for attributes. If no value is provided during instantiation, the default value defined in the __init__
method will be used.
Code Example: Class with Default Values
In this example, the Car
class has a color
attribute with a default value of "Black"
. When car1
is created, no color is specified, so it uses the default. When car2
is created, the color is explicitly set to "Red"
, overriding the default. This demonstrates how to provide flexibility in object creation.
class Car:
def __init__(self, make, model, color="Black"):
self.make = make
self.model = model
self.color = color
# Creating instances of the Car class
car1 = Car("Toyota", "Camry") # Uses default color "Black"
car2 = Car("Honda", "Civic", "Red") # Overrides default color
print(car1.make, car1.model, car1.color)
print(car2.make, car2.model, car2.color)
Benefits of Default Values
Real-Life Use Case: Configuration Settings
Consider a software application that needs to read configuration settings. A Settings
class can be defined with default values for various settings (e.g., default logging level, default database connection string). Users can then create instances of the Settings
class, overriding the default values only for the settings they want to customize.
Important Considerations
FAQ
-
Can I have multiple attributes with default values?
Yes, you can define default values for as many attributes as you need in the__init__
method. Attributes with default values should typically be placed at the end of the argument list. -
What happens if I provide a value for an attribute with a default value?
If you provide a value for an attribute that has a default value, the provided value will override the default value. -
Why should I avoid using mutable default arguments?
Mutable default arguments are created only once when the function (or method) is defined. If you modify a mutable default argument within the function, the change persists across multiple calls to the function, potentially leading to unexpected behavior.