2017-08-14 62 views
-3

我学习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 

是什么不无意味着在这种情况下?

+0

你知道什么是'None'手段?你知道“不”是什么意思吗? – user2357112

+0

如果self.sold_on的*值*不同于None(即不是None),则满足条件。 –

+0

@ user2357112我知道符号表示**如果有某个值**,则返回0。0 –

回答

-1

看来类的创建者希望您与None初始化一个新Car对象为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类实际上是打算使用的。

+0

这个答案真的错过了观点。他并不是在问Car怎么可以用,他问的是不是None的作品。 –

1

在Python中,None值是一个对象,非常类似于其他任何对象。它也是一个单例(即只有一个None对象)。它表示缺乏价值。

Python无对象,表示缺少值。 (Source)

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

如果将此扩展为您的示例,您正在检查self.sold_on对象是否为而不是None对象相同。请注意,如果self.sold_on任何东西None,则这将评估为True

(请记住,在Python中的任何变量是对象的引用,因此多个变量可以全部指向同一个对象None