python中的@property

@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)
posted @ 2020-11-05 15:24  Morpheus1024  阅读(73)  评论(0编辑  收藏  举报