欢迎光临散文网 会员登陆 & 注册

阿凡达泰山众筹系统开发(开发案例)丨阿凡达泰山众筹源码分析及功能

2023-02-25 15:42 作者:bili_16249894763  | 我要投稿

  新零售指的就是新型零售商业模式,将线上与线下进行融合,消费者可以从线上进行选物,然后到线下门店进实际体验,另外还可以通过大数据来了解消费者的消费习惯,从而提供更加完善的服务。


  通过Python C API来创建


  通过类型对象来创建


  Python对外提供了C API,分为两种:


  AOL,(Abstract Object Layer),形式如PyObject_***形式,可以应用在任何Python对象上


  PyObject*intObj=PyObject_New(PyObject,&PyInt_Type)


  COL(Concrete Object Layer)只能作用于某一种类型的对象上,对于内建对象都有一套API


  PyObject*intObj=PyInt_FromLong(10)


  对于自定义的类型,开发需求I59源码2OO7开发3O69 比如Class A(object)定义的类型A,要创建其对象,由于Python不可能事先提供


  PyA_New这样的API,他将会通过A所对应的类型对象来创建实例对象。


  下面我们举例创建整数对象的函数调用流程(如图):


  PyInt_Type中的tp_new会被调用,如果tp_new是空,会到基类找tp_new


  tp_new会访问PyInt_Type中记录的tp_basicsize信息,完成申请内存的操作


  之后调用tp_init,完成初始化的操作


  Python利用C语言实现了对象的多态性,Python内部在创建对象时会使用PyObject*取保存和维护这个对象,(所有对象的头部是相同的),因此直接可以使用该指针所指对象的ob_type域动态去判断,正是这个域的存在,Python实现了多态性。


  我们来分析一下:


  void Print(PyObject*object){


  object->ob_type.tp_print(object);


  }需求开发及源码:yy625019


  如果指针本身是一个PyIntObject*,就会调用到PyIntObject的类型对象中定义的输出操作,


  如果是一个PyStringObject*,就会调用到PyStringObject对象对应的类型对象中定义的输出操作。


  1.4引用计数


  Python内建了垃圾回收机制,进行较为繁重的内存管理工作,引用计数正是Python垃圾回收机制的一部分。


  Python中每一个东西都有一个ob_refcnt变量,维护着引用计数,决定着对象的创建和消亡。


  通过Py_INCREF(op)和Py_DECREF(op)两个宏来增加和减少一个对象的引用计数。


  当引用计数为0,会调用该对象的tp_dealloc进行析构动作


阿凡达泰山众筹系统开发(开发案例)丨阿凡达泰山众筹源码分析及功能的评论 (共 条)

分享到微博请遵守国家法律