python - 类
2021/6/10 14:21:26
本文主要是介绍python - 类,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1 类的创建和使用
1.1 创建类
创建一个Dog类,然后赋予其名字和年龄将其实例化。我们赋予每个dog坐下和打滚的能力
python中首字母大写的名称指的是类。类定义中的括号是空的,因为我们要从空白创建这个类。
1.2 方法__init__( )
类中的函数称为方法,方法__init__() 是一个特殊的方法,每当你根据类创建新实例时,Python都会自动运行它。
在这个方法的定义中,形参self 必不可少,还必须位于其他形参的前面。为何必须在方法定义中包含形参self 呢?因为Python调用这个__init__()方法来创建Dog实例时,将自动传入实参self 。每个与类相关联的方法调用都自动传递实参self,它是一个指向实例本身的引用,让实例能够访问类中的属性和方法。我们将通过实参向Dog()传递名字和年龄,self会自动传递,因此我们不需要传递它。每当我们根据Dog类创建实例时,都只需给最后两个形参(name 和age )提供值。
1.3 根据类创建实例
可以将类视为创建实例的说明.
python使用实参调用Dog类中的方法__init__().而它使用我们提供的值来设置属性,方法__init__()中会自动返回此实例,然后储存在我们设置的变量中。
1.3.1 访问属性
访问属性使用句点法,在类中引用这个属性时,使用的是self.name。
1.3.2 调用方法
可以使用句点法来调用Dog类中的任意方法。要调用方法,可以指定实例的名称和调用的方法,并用句点来分隔他们。
1.3.3 创建多个实例
将多个实例存储在不同的变量中,或者占用列表或字典的不同位置
2 使用类和实例
可以使用类来模拟许多场景,你可以直接修改类创建的实例的属性,也可以以特定的方法来修改。
2.1 Car类
创建一个Car类
2.2 给属性设定默认值
下面给它添加一个随时间变化的属性,它存储汽车的总里程。
类中的每个属性都必须有初始值,哪怕这个值是0或空字符串。在有些情况下,如在方法__init__() 内指定设置默认值时,就无需包含为它提供初始值的形参。
为Car添加一个odometer的属性,默认为0,再添加一个读里程的方法read_odometer().
2.3 修改属性的值
有三种方法修改属性的值。
2.3.1 直接修改属性的值
直接将里程表读数改为23
2.3.2 通过方法修改属性的值
无需直接访问属性,将值传递给一个方法,让它在内部更新。
添加一个update_odometer()的方法
可对方法update_odometer()进行扩展,使其在修改里程表读数时做些额外的工作。下面来添加一些逻辑,禁止任何人将里程表读数往回调.
2.3.3 通过方法对属性的值进行递增
有时候需要将属性值递增特定的量,而不是将其设置为全新的值。假设我们购买了一辆二手车,且从购买到登记期间增加了100英里的里程,下面的方法让我们能够传递这个增
量,并相应地增加里程表读数.
3 继承
如果你编写的类是另一个类的特殊版本,可使用继承。当一个类继承另一个类时,它将自动获得另一个类的所有属性和方法。原有的类称为父类,新类称为子类。
3.1 子类的方法__init__()
创建子类的实例时,Python首先需要完成的任务是给父类的所有属性赋值。为此子类的方法__init__()需要父类施以援手。
例如,下面来模拟电动汽车。电动汽车是一种特殊的汽车,因此我们可以在前面创建的Car类的基础上创建新类ElectricCar,这样我们就只需为电动汽车特有的属性和行为编写代码。
创建子类,父类必须包含其中,方法__init__()接受创建Car实例所需的信息
super() 是一个特殊函数,帮助Python将父类和子类关联起来。这行代码让Python调用ElectricCar的父类的方法__init__(),让ElectricCar实例包含父类的所有属性。父类也称为超类(superclass),名称super因此而得名。
3.2 给子类定义属性和方法
让一个类继承另一个类后,可添加区分子类和父类所需的新属性和方法。在子类中添加一个电量信息。
3.3 重写父类方法
对于父类的方法,只要它不符合子类模拟的实物的行为,都可对其进行重写。为此,可在子类中定义一个这样的方法,即它与要重写的父类方法同名。这样,Python将不会考虑这个父类方法,而只关注你在子类中定义的相应方法。
父类添加fill_gas()方法
子类添加同名的方法可以重新定义父类方法
3.4 将实例用作属性
使用代码模拟实物时,你可能会发现自己给类添加的细节越来越多,属性和方法清单以及文件都越来越长。在这种情况下,可能需要将类的一部分作为一个独立的类提取出来。你可以将大型类拆分成多个协同工作的小类。
添加一个Battery类,不继承任何父类。在ElectricCar类中调用Battery类,创建一个新的battery实例,存储到自己的self.battery属性中
现在我们想多详细地描述电瓶都可以,且不会导致ElectricCar类混乱不堪。下面再给Battery类添加一个方法,它根据电瓶容量报告汽车的续航里程:
这篇关于python - 类的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-27Python编程基础教程
- 2024-12-27Python编程基础指南
- 2024-12-24Python编程入门指南
- 2024-12-24Python编程基础入门
- 2024-12-24Python编程基础:变量与数据类型
- 2024-12-23使用python部署一个usdt合约,部署自己的usdt稳定币
- 2024-12-20Python编程入门指南
- 2024-12-20Python编程基础与进阶
- 2024-12-19Python基础编程教程
- 2024-12-19python 文件的后缀名是什么 怎么运行一个python文件?-icode9专业技术文章分享