[英]How to return objects from methods in Python?
谁能描述如何从可以访问其他方法和属性的方法返回对象?
例子:
pizza = PizzaHut()
order = pizza.order()
print order.order_number
order.cancel()
使用适当的方法和属性创建一个Order
类。 之后,您将能够从PizzaHut.order()
方法返回此类的实例。
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()
class Foo():
def f(self):
print "Foo.f called"
class Bar():
def b(self):
return Foo()
bar = Bar()
bar.b().f() # prints "Foo.f called"
class Order:
def __init__(self, number):
self.order_number = number
class PizzaHut:
def __init__(self):
self.order = Order(1234)
def order(self):
return self.order
这是如何从方法返回 object
class Order(object):
def __init__(self, number, amount):
self.number = number
self.amount = amount
def cancel(self):
self.amount = 0
return self #here you return back the object
您可以在 python 中使用 Namedtuplesin。
# Using namedtuple is way shorter than
# defining a class manually:
>>> from collections import namedtuple
>>> Car = namedtuple('Car', 'color mileage')
# Our new "Car" class works as expected:
>>> my_car = Car('red', 3812.4)
>>> my_car.color
'red'
>>> my_car.mileage
3812.4
# We get a nice string repr for free:
>>> my_car
Car(color='red' , mileage=3812.4)
# Like tuples, namedtuples are immutable:
>>> my_car.color = 'blue'
AttributeError: "can't set attribute"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.