class Car():
"""一次模拟汽车的简单尝试"""
def __init__(self, make, model, year=2016):
"""初始化描述汽车点的属性"""
self.make = make
self.model = model
self.year = year
self.odometer_reading = 0
def get_descriptive_name(self,mileage):
"""返回整洁的描述性信息"""
long_name =self.make + " " + str(self.year) + ' ' + self.model + ' ' +str(self.odometer_reading) + ' ' + srt(mileage)
return long_name.title()
调用一个方法,需要注意两点:首先要保证其中的每个参数都有值,其次是每个参数值都是你想要的值。
方法get_descriptive_name(),其结果简单,但包含的5个参数属于多种类型(A、B、C、D):
(B)(C)属于给类属性设置默认值的两种不同方式
凡是通过__init__()函数进行初始化的变量都是类的属性,不管其有没有默认值,更不管设置默认值的方式
这五个参数中__init__()函数函数下的四个变量都是类Car的属性。但是mileage不是。
(A):如make, model,属于类的属性,而且是最普通最常见的情况。就按部就班地初始化,然后等实例给其提供值;
(B)如year,属于类的属性,但是属性year是在形参列表中将该属性设置为可选的,而且其初始化的过程同make, model并没有区别,等号右边仍然是形参year,而不是2016;
self.year = year
(C):如odometer_reading,属于类的属性,但是在初始化过程中设置了默认值,其等号右边不是形参odometer_reading,而是一个数字0(以这种方式设置默认值的属性,不能放到方法__init__()的括号中,但是它仍然是类Car的属性。正因为它是不在形参列表中的类的属性,
所以它的初始值必须要明确:必须是数字和带引号的字符串那种,
还可以是一个实例(P150下的类Battery的实例Battery()被用作了类ElectricCar的属性battery的初始值。(其实这里的类Battery的实例Battery()的名称与ElectricCar的属性battery用不同的名字表示也可以,没有规定他们必须相同。但是大小写一定要弄对,尤其是大写。他这里没有给类Battery的实例起小写名字,所以用的等号左边的大写))。
反正是要求能实实在在地给这个属性