I am new to OOP in Python.
As the title suggests, I am unsure as to how the __init__ method can assign attributes to an object of a given class if the attributes have not been defined in the constructor.
I tried some experimenting around with the following code:
class initPlane:
def __init__(self, manufacturer)
print(manufacturer)
def get_manufacturer(self):
return self.manufacturer
cessna = initPlane("Cessna")
print(cessna.get_manufacturer())
Obviously I received the "AttributeError" that the class initPlane has no attribute manufacturer when the method 'get_manufacturer' tries to receive the manufacturer attribute of the instance cessna.
To fix this it is clear that I need to create the manufacturer attribute by altering the code of the constructor as follows:
def __init__(self, manufacturer)
self.manu = manufacturer
print(manufacturer)
What is confusing... is that I do not understand how I am able to print the manufacturer attribute, without creating the attribute in the first place. The following code returns a result without errors.
class initPlane:
def __init__(self, manufacturer)
print(manufacturer)
cessna = initPlane("Cessna")
I do not know how the method is able to print the manufacturer, without me first creating the attributes within the constructor.