Can anyone describe how to return objects from a method on which further methods and attributes can be accessed?
Example:
pizza = PizzaHut() order = pizza.order() print order.order_number order.cancel()
Advertisement
Answer
Create an Order
class with appropriate methods and properties. After that, you’ll be able to return an instance of this class from PizzaHut.order()
method.
class Order(object): def __init__(self, number, amount): self.number = number self.amount = amount print self def __str__(self): return "Order #%s: amount = %s" % (self.number, self.amount) @property def order_number(self): return self.number def cancel(self): self.amount = 0 print "Order is cancelled." print self class PizzaHut(object): def __init__(self, price): self.price = price def order(self): return Order(42, self.price) pizza = PizzaHut(4.99) order = pizza.order() print order.order_number order.cancel()
Python 3 version
class Order: def __init__(self, number, amount): self.number = number self.amount = amount print(self) def __str__(self): return f'Order #{self.number}: amount = {self.amount}' @property def order_number(self): return self.number def cancel(self): self.amount = 0 print('Order is cancelled.') print(self) class PizzaHut: def __init__(self, price): self.price = price def order(self): return Order(42, self.price) pizza = PizzaHut(4.99) order = pizza.order() print(order.order_number) order.cancel()