Now that we've begun to see OOP and class structures, we're going to investigate the init method more. The init method allows classes to have default behaviors and attributes.
You will be able to:
- Define custom init methods for object initialization
- Create instance variables in the init method
- Use default arguments in the init method
By using the __init__
method, we can initialize instances of objects with defined attributes. Without this, attributes are not defined until other methods are called that would populate these fields. trying to call an attribute of a class will produce an error. For example, imagine a person class with methods to set_name and set_job:
class Person:
def set_name(self, name):
self.name = name
def set_job(self, job):
self.job = job
bob = Person()
If we try to access an attribute before setting it we'll get an error.
bob.name
bob.set_name('Bob')
bob.name
Using the init method allows us to set attributes on instantiation.
class Person:
def __init__(self, name, job):
self.name = name
self.job = job
bob = Person('Bob', 'Carpenter')
print(bob.name)
print(bob.job)
Written like this, these arguments then become required:
someone = Person()
To circumvent this, we can also define init to have default arguments. This allows parameters to be specified if desired but are not required.
class Person:
def __init__(self, name=None, job=None):
self.name = name
self.job = job
someone = Person()
print(someone.name)
print(someone.job)
print('\n')
governer = Person(job = 'Carpenter')
print(governer.name)
print(governer.job)
print('\n')
bob = Person('Bob', 'Carpenter')
print(bob.name)
print(bob.job)
In this lesson you got a brief introduction to the init method and how you can use it to set attributes when objects are initialized, including default parameters.