1.2 Python中的对象
本质上来说,Python中的对象是对Python中的类进行实例化后输出的产物。Python中的对象和Python中的基本类型变量在实现方式上是完全不同的。
对于Python中的基本类型变量来说,Python官方在Python语言层面已经进行了规定或约束。以数字类型变量来说,在Python语言对外发布时,数字类型已经被固化到了Python语言当中,并且通过一定的数字占位,与Python虚拟机中的语义规范进行对应,即我们在Python中声明了数字类型的基本变量之后,Python虚拟机通过已经固化好的数字占位来识别这一变量所属的类型。
Python中的对象本身也是一种变量,只不过这种变量的类型是随机的、可变的,这是与Python中的基本类型变量最大的不同之处。Python官方规定了Python对象在Python虚拟机中的存活方式,即以一种对象地址的形式在Python虚拟机中存在,且对象的生命周期交由Python虚拟机自动管理,不需要开发者手动管理Python对象的生命周期。需要开发者做的,只是创建Python对象。
在Python中,创建一个类的对象的代码如下所示。
在上述代码中,我们定义了一个名为ExampleClass的类,并且在ExampleClass类中声明了两个数字类型变量NumsA和NumsB,还声明了一个名为demo的方法,该方法最终返回hello python。我们将ExampleClass类定义完毕之后,就可以在需要用到的地方对它进行实例化了。在上述代码中,ExampleClassObject=ExampleClass()代码通过ExampleClass()的方式将定义好的ExampleClass类实例化,即通过ExampleClass()的方式创建ExampleClass类的对象,并用ExampleClassObject变量来接收。
和其他面向对象的编程语言创建类的对象的方式不同,在Python中不需要通过new关键字创建对象,只需要在类的名称后面添加一对英文状态下的小括号就可以了。其他面向对象的高级编程语言中的对象的基本组成,如对象的头信息、对象的实例数据、对象的填充数据,在Python语言中也有。
在执行了ExampleClass()之后,Python解释器会首先确定与ExampleClass()对应的类的类型。在确定对应类的类型后,Python解释器便和Python虚拟机共同为ExampleClass()类型对象分配一定的内存空间,从而存储ExampleClass()对象。在这些基础的分配流程完成之后,我们还为ExampleClass()对象赋予一个变量,即ExampleClassObject。所以,访问ExampleClass()对象中的字段或者方法可以通过ExampleClassObject变量来实现。值得注意的是,ExampleClassObject变量中并不会存储ExampleClass()对象本身,而是存储ExampleClass()对象的副本地址,使其成为ExampleClass()对象的一个引用,并最终以这种引用的方式存在。在Python中,通过ExampleClassObject变量来访问ExampleClass()对象时始终会使用引用的方式。