Python 进阶系列2:面向对象编程

.

Python作为一门流行的编程语言,广受程序员与数据科学家的喜爱。如今的Python拥有丰富的第三方库和良好的生态发展,使其能够在数据科学、人工智能、web等各领域获得广泛的支持。Python进阶系列旨在分享一些Python的高级特性,如Lambda表达式、元类(metaclass)的使用、类(class)和类型(type)的统一、经典类与新式类区别与应用等。*

作者:DjangoPeng

Object

在学习和使用Python的过程中,应该有不少人都听过这句话:

”Everything is object!”

在Python的面向对象编程中,Object是最为核心的部分。今天,我想通过剖析Python Object的构造过程和组成原理,对比Python与Java/C++等在Object实现上的区别。

构造函数

定义一个类,通过构造函数完成类的实例化是通用的做法。通常,__init__被视作Python对象的构造函数。

定义Person类:

1
2
3
4
class Person():
def __init__(self, name, age):
self.name = name
self.age = age

实例化Person对象jeff:

1
2
3
>>> jeff = Person("jeff", 23)
>>> [jeff.name, jeff.age]
['jeff', 23]

在执行jeff = Person("jeff", 23)这条语句时,实际上调用了Person类的__init__方法,通过传入参数name="jeff"age=23实现对成员函数的赋值和Person对象的实例化。因此,该方法返回一个Person类的实例:

1
2
>>> jeff
<__main__.Person instance at 0x103e85a28>

对比Java的类定义和实例化方法: