title: staticmethod and __init__ in OOP
body: <p>Good Morning,
  I'm going through the book Dusty Phillips - Python 3 Object Oriented Programming.
  There is an example of the class</p>
  
  <pre><code>class Property:
      def __init__(self, square_feet='', beds='', baths='', **kwargs):
          super().__init__(**kwargs)
          self.square_feet = square_feet
          self.num_beds = beds
          self.num_baths = baths
  
      def display(self):
          print("PROPERTY DETAILS")
          print(f'square footage: {self.square_feet}')
          print(f'bedrooms: {self.num_beds}')
          print(f'baths: {self.num_baths}')
          print()
      @staticmethod
      def prompt_init():
          return dict(square_feet=input("Enter the square feet: "),beds=input("Enter number of bedrooms: "),baths=input("Enter number of baths: "))
  </code></pre>
  
  <p>and information that prompt_init - "This method uses the Python dict constructor to create a dictionary of values that can be passed into <strong>init</strong>. The value for each key is prompted with a call to input."
  Question is, how method prompt_init as staticmethod could pass variables to <strong>init</strong>?
  I completely don't understand what exactly is happening and how it might work like that.
  Thanks in advance!</p>