杨博雄教授在编写的书中写道:
现实世界中存在各种不同形态的事物,事物间又存在着各种各样的联系。在程序中用对象来映射现实中的事物,用对象之间的关系来描述事物之间的联系,这种思想就是面对对象。
《Python编程从入门到实践》中写道:
面向对象编程时最有效的软件编写方法之一。在面向对象编程中,你编写表示现实世界中的事物和情景的类,并基于这些类来创建对象。编写类时,你定义一大类对象都有的通用行为。基于类创建对象时,每个对象都自动具备这种通用行为,然后可根据需要赋予每个对象独特的个性。
根据类来创建对象被称为实例化。
1、根据约定,python中首字母大写的名称指的是类,小写为类创建的实例。
类名:应使用驼峰命名法,单词首字母都大写,并且不使用下划线。
实例名和模块名:都采用小写格式,并在单词之间加上下划线。
2、方法_init_( )
类中的函数都称为方法,__init( )__则是一个特殊的方法,每次用类创建实例时,python都会自动执行它。创建类时的参数也会传导给它。
如:my_dog = Dog(‘while’, 6)
当在‘__init__’方法中为一个变量赋了一个初始值,该初始值将称为该类的默认值。当你在创建实例时显式的为这个变量提供了一个值,这个值将会覆盖掉‘__init__’中设置的默认值。
3、方法定义中的形参self
方法定义中都必须包含形参self。每个与类相关联的方法调用都自动传递实参self,它是一个指向实例本身的引用,让实例能够访问类中的属性和方法。
只需要传递name和age
4、变量前缀self和类中定义的方法
以self为前缀的变量(属性)可供类中的所有方法使用(self.name和self.age),还可通过类的任何实例访问这些变量。
创建的实例都可以访问这些方法。(即都掌握这些技能)
5、给属性指定默认值
类中的每个属性必须有初始值,若在方法__init__( )内已经指定了属性的初始值,则无需在创建实例时再给该属性提供初始值的形参。
6、继承
一个类继承另一个类时,将自动获得另一个类的所有属性和方法。原有类称为父类,新类为子类。子类继承了父类的所有属性和方法,同时还可以定义自己的属性和方法。
7、父类位置
创建子类时,父类必须包含在当前文件中,且在子类前面。Class ElectircCar(Car)
8、super( )函数
特殊函数,将父类和子类关联起来。让python调用EletircCar的父类的方法__init__(),使子类EletricCar包含父类的所有属性。父类也被称为超类(superclass)
初始化时也要对这三个属性赋初值
9、给子类定义属性和方法
一个类继承另一个类后,可添加区分子类和父类所需的属性和方法
10、实例用作属性
可以将实例用作类的一个属性,以简化代码,更具逻辑性。
将实例作为类的属性后,每当方法__init( )__被调用时,都将创建一个新的Battery实例,并将实例存储在属性self.battery中,每个ElecticCar实例都包含一个自动创建的Battery实例。
要描述类Battery( )中的方法describe_battery( )时,要用到属性battery
这行代码首先在实例my_tesla中查找属性battery,并对存储在属性中的Battery实例调用方法describe_battery( )。
输出为:
This car has a 70-kWh battery.
导入类:
11、导入单个类
在car.py文件中创建类car
my_car.py中导入:
12、导入多个类
用逗号隔开各个类
13、导入整个模块
需要使用句点表示法访问需要的类。该方法创建类实例时代码都包含模块名,因此不会与当前文件使用的任何名称发生冲突。