2017-08-14 46 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