1.创建和使用类
类几乎可以模拟任何东西,定义一大类对象都有的通用行为。
在python中,根据约定,首字母大写的名称指的是类,
1.1 方法_init_() — 特殊方法
(1)每当实例化时,python都会自动运行 init()方法。
(2)在这个方法中,约定:开头和末尾各有2个下划线。
(3)形参self必不可少,必须位于其他形参的前面。python调用这个_init_()来创建实例时,会自动传入实参self。每个与类相关联的方法都自动传递实参self,它是一个指向实例本身的引用,让实例能够访问类中的属性和方法。
(4)以self为前缀的变量都可供类中的所有方法使用,并且可以通过类中的任何实例来访问这些变量(属性)。
2.根据类创建实例
2.1 访问属性
根据Dog类创建实例后,使用句点表示法来调用Dog类中定义的属性
2.2 调用方法
根据Dog类创建实例后,使用句点表示法来调用Dog类中定义的任何方法
2.3 给属性指定默认值
类中的每个属性都必须有初始值,哪怕这个值是0或空字符串。如在方法_init_()内指定初始值,则无需在提供原始值的形参。
2.3 修改属性的值
(1)直接通过实例进行修改
使用句点表示法直接访问并设置汽车的属性odometer_reading
————————————————————————————————
————————————————————————————————
(2)通过方法进行设置
增加替你更新属性的方法,无需直接访问属性,将值直接传递给这个方法,由它在内部进行更新。
在Car中增加一个名为update_odometer()的方法
—————————————————————————————————
—————————————————————————————————
—————————————————————————————————
(3)通过方法进行递增
—————————————————————————————————
—————————————————————————————————
—————————————————————————————————
总结:修改属性,可以在类方法中,也可在实例化后修改,全局起作用
3.继承
编写非空白类时,可使用继承,一个类继承另一个类时,它将自动获得另一个类的所有属性和方法;原有的类称为父类,而新类称为子类。
子类继承了其父类的所有属性和方法,同时还可以定义自己的属性和方法。
电动汽车类是一种特殊的汽车。
(1)创建子类时,父类必须在当前文件中,且位于子类的前面;
(2)定义子类时,必须在括号内指定父类的名称;
(3)方法_init_()必须包含创建父类所需属性;
(4)super()将父类和子类关联,子类调用父类方法_init_(),包含父类的所有属性。因此父类也称为superclass
3.1 给子类定义属性和方法
3.2 重写父类的方法
对于父类的方法,只要它不符合子类模拟的实验行为,就可对它进行重写。它要与重写的父类方法同名。
使用继承时,可让子类保留从父类那里继承的精华,剔除不需要的糟粕。
3.3 将实例用作属性----难点
定义名为Battery的新类,它没有继承任何类。方法_init_()中,有个形参battery_size为可选,默认为70.
在ElectricCar类中,创建一个名为self.battery的属性。创建一个新的Battery实例,并将该实例存储在属性self.battery中。