我学习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 :(得分:1)
在Python中,None
值是一个对象,就像其他任何东西一样。它也是一个单例(即只有一个None
个对象)。它表示缺乏价值。
Python None对象,表示缺乏价值。 (Source)
在Python中,is
关键字测试对象是否相等。也就是说,x is y
测试x
和y
是否是相同的对象,如果是True
,则返回False
他们不是。因此,x is not y
测试x
和y
是不相同的对象。
如果您将此扩展到您的示例,则表示您正在检查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
类实际上是如何使用的。