@property在python中是一个装饰器
一般用于将函数转换为属性,例如:
这里首先定义一个订单类
class Order:
goods_price = models.IntegerField(default=0)
order_time = models.DateTimeField(auto_now_add=True)
这里是一个商品类
class OrderGoods:
good_name = models.CharField(max_length=128)
good_num = models.IntegerField(default=0)
假如我要生成一个订单,里面要有商品,商品数量,商品价格,这个时候就可以使用装饰器@property将商品类属性变成订单类属性了
class Order:
goods_price = models.IntegerField(default=0)
order_time = models.DateTimeField(auto_now_add=True)
# 这里加装饰器,将商品类的属性变成订单类的属性
@property
def ordergoods(self):
# 显然,想让调用商品类属性,就得要有一个商品类的对象,所有这里获取一个商品类对象
return OrderGoods.objects.last()
这时候订单类就可以直接调用商品类属性了,把别人的儿子变成自己的儿子
a = Order()
print(a.ordergoods)