Python is an object-oriented programming language, which means it uses classes and objects to organize and structure code.
A class is a blueprint for creating objects (a particular data structure), providing initial values for state (member variables or attributes), and implementations of behavior (member functions or methods).
Creating a Class
To create a class, use the keyword class followed by the name of the class.
The class name should start with a capital letter.
Here is an example of a simple class called Dog:
class Dog: pass
The pass statement is used as a placeholder and does nothing.
We can add class attributes and methods to the class after the class has been defined.
Attributes are the variables that hold the state of an object.
They can be defined by using the class name followed by a dot . and the attribute name.
The following example defines the attribute name in the Dog class:
class Dog: name = ""
Methods are the functions that define the behavior of an object.
They can be defined by using the def keyword followed by the method name.
The following example defines the method bark in the Dog class:
class Dog: def bark(self): print("Woof woof!")
Note that the first argument in a method is always self, which refers to the current instance of the class.
Creating an Object
An object is an instance of a class. To create an object, we use the class name followed by parentheses ().
dog1 = Dog()
This creates an object called dog1 of the Dog class. We can access the attributes and methods of an object using the dot notation.
dog1.name = "Buddy" dog1.bark()
This will set the name attribute of the dog1 object to Buddy and call the bark() method. The output will be "Woof woof!".
A constructor is a special method that gets called when an object is created. It is used to initialize the state of an object. It is defined using the init method.
The following example demonstrates how to use a constructor to initialize the name attribute of the Dog class:
class Dog: def __init__(self, name): self.name = name def bark(self): print("Woof woof!") dog1 = Dog("Buddy") dog1.bark()
This will create a Dog object called dog1 with the name attribute set to Buddy and call the bark() method. The output will be "Woof woof!".
Inheritance is a mechanism that allows a new class to inherit the properties and methods of an existing class.
The new class is called the derived class or child class, and the existing class is called the base class or parent class.
We can define a new class that inherits the properties and methods of an existing class by using the parent class name in parentheses after the new class name.
class GoldenRetriever(Dog): pass
This creates a new class called GoldenRetriever that inherits from the Dog class.
The GoldenRetriever class has access to all the attributes and methods of the Dog class.
We can also add new attributes and methods to the GoldenRetriever class or override the inherited ones.
We can override a method in the derived class that has the same name as a method in the base class.
This allows us to change the behavior of the method.
For example, if we want the GoldenRetriever class to have a different bark sound, we can override the bark() method:
class GoldenRetriever(Dog): def bark(self): print("Bark bark!") golden1 = GoldenRetriever("Max") golden1.bark()
This will create a GoldenRetriever object called golden1 with the name attribute set to Max and call the bark() method.
The output will be "Bark bark!" instead of "Woof woof!" as it was defined in the parent class.
In conclusion, classes and objects are fundamental concepts in object-oriented programming.
They allow us to organize and structure code, encapsulate data, and define behavior.
Python provides a powerful and easy-to-use implementation of classes and objects, with features such as constructors, inheritance, and overriding.