Метод prompt_init()
stati c не создает экземпляр какого-либо свойства, просто запрашивает у пользователя вводные данные и возвращает словарь атрибутов, которые можно использовать для создания экземпляров.
В качестве примера :
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: "))
inputs = Property.prompt_init()
new_property = Property(**inputs)
Вы также можете определить фабричный метод stati c, чтобы упростить это:
class Property:
...
@staticmethod
def create_property():
return Property(**Property.prompt_init())
new_property = Property.create_property()
или еще лучше, как метод класса:
class Property:
...
@classmethod
def create_property(cls):
return cls(**cls.prompt_init())
new_property = Property.create_property()
В любом случае вам все равно придется вызвать конструктор класса для создания экземпляра, поскольку prompt_init()
этого не делает.