理解什么是“不是无”的意思

时间:2017-08-14 05:46:21

标签: python oop

我学习Oop并在python中实现。这是教我Oop概念的例子。

class Car(object):

    def __init__(self, wheels, miles, make, model, year, sold_on):
        """Return a new Car object."""
        self.wheels = wheels
        self.miles = miles
        self.make = make
        self.model = model
        self.year = year
        self.sold_on = sold_on

    def sale_price(self):
        """Return the sale price for this car as a float amount."""
        if self.sold_on is not None:
            return 0.0  # Already sold
        return 5000.0 * self.wheels

    def purchase_price(self):
        """Return the price for which we would pay to purchase the car."""
        if self.sold_on is None:
            return 0.0  # Not yet sold
        return 8000 - (.10 * self.miles)

到目前为止,我不明白以下代码的含义。

if self.sold_on is not None:
    return 0.0  # Already sold
return 5000.0 * self.wheels

在此上下文中,不是意味着什么?

2 个答案:

答案 0 :(得分:1)

在Python中,None值是一个对象,就像其他任何东西一样。它也是一个单例(即只有一个None个对象)。它表示缺乏价值。

  

Python None对象,表示缺乏价值。 (Source)

在Python中,is关键字测试对象是否相等。也就是说,x is y测试xy是否是相同的对象,如果是True,则返回False他们不是。因此,x is not y测试xy相同的对象。

如果您将此扩展到您的示例,则表示您正在检查self.sold_on对象 对象是否与<{1}}对象相同。请注意,如果None 任何True,则评估为self.sold_on

(请记住,Python中的任何变量都是对象的引用,因此多个变量都可以引用相同的None对象)

答案 1 :(得分:-1)

该类的创建者希望您为Car属性初始化None sold_on个新对象,例如:

vw_bug = Car(4, 150000, 'VW', 'Bug', 1972, None)

然后,如果有人使用sale_price()方法检查销售价格 它将返回$ 5000 *轮数。

但如果这辆车在2017年8月8日出售,你可以,例如, 将sold_on属性设置为字符串'2017/08'08'。之后,如果有人检查销售价格,它将返回$ 0,因为sold_on属性将不再具有值None

vw_bug.sold_on = '2017/08/08'

您需要一个更完整的类实现和/或文档字符串来准确说明Car类实际上是如何使用的。