In Python, the responsibilities of a "constructor" are split over two methods:
__new__()
— it is a static method that's responsible for creating (and returning) a new instance of the class;__init__()
— it is an instance method that's responsible for initializing the instance after it has been created (and does not return anything).
The __init__
method, however, is the closest to the definition of a conventional "constructor" as you would see in other OOP languages (such as C++, Java, PHP etc.). It has the following syntax:
class Contact: def __init__(): # ...
You would create an instance of this class, for example, like so:
contact = Contact()
The first argument to the __init__()
method is always the "self
" variable (which is called "self
" by convention, but can be named anything). It represents the instance of the object itself, and can be used to access/assign instance attributes:
class Contact: def __init__(self, name, age): self.name = name self.age = age contact = Contact('John Doe', 24) print(contact.name) # 'John Doe' print(contact.age) # 24
In fact, whenever any instance method is called, a reference to the instantiated object is passed as the first argument to that method. For example, notice how the add_phone()
method (in the code below) receives "self
" as the first argument:
class Contact: def __init__(self, name, age): self.name = name self.age = age self.phone = [] def add_phone(self, number): self.phone.append(number) contact = Contact('John Doe', 24) contact.add_phone('+123456789') contact.add_phone('+198765432') print(contact.phone) # ['+123456789', '+198765432']
Hope you found this post useful. It was published . Please show your love and support by sharing this post.