【问题标题】:Use of property in a class在类中使用属​​性
【发布时间】:2020-11-19 22:14:39
【问题描述】:

我无法理解这段代码,

class Price:
    def __init__(self, price):
    self.price = price

    @property
    def price(self):
        return self.__price

   @price.setter
   def price(self, price):
        if price < 0:
            raise ValueError("Price cannot be negative")
        self.__price = price


pc = Price(500)
pc.price = -100
print(pc.price)

当我们使用property对象时,是不是说@property装饰器下的方法总是先执行,然后@price.setter装饰器下的方法执行?或者是周围的其他方式。有人可以详细解释财产的使用吗?我看了一些网上的解释,但我仍然感到困惑。 谢谢。

【问题讨论】:

    标签: python class properties


    【解决方案1】:

    使用属性是为了在尝试获取/设置/删除属性时允许一些代码执行。你的例子很好——没有property.setter,我们代码的用户可以很容易地将-100分配给Price的实例。

    但是我们不希望价格低于零...所以我们需要将price 描述为属性,并为其添加一些逻辑。那么每次访问Price().price(获取price),或者尝试设置.priceprice setter)时都会使用property代码。

    【讨论】:

      猜你喜欢
      • 2017-06-08
      • 2016-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-25
      • 2018-11-08
      • 2014-06-04
      • 2011-09-17
      相关资源
      最近更新 更多