Metadata-Version: 2.1
Name: pyobject
Version: 1.2.4
Summary: 一个提供操作Python对象底层工具的模块。A utility tool with some submodules for operating internal python objects.
Home-page: https://github.com/qfcy/Python/tree/main/pyobject
Author: qfcy qq:3076711200
Author-email: 3076711200@qq.com
Keywords: pyobject,python,object,utility,对象,bytecode,字节码,面向对象编程,object browser,对象浏览器
Classifier: Programming Language :: Python
Classifier: Natural Language :: Chinese (Simplified)
Classifier: Topic :: Utilities
Classifier: Topic :: Software Development :: Bug Tracking
Classifier: Topic :: Software Development :: Debuggers
Classifier: Topic :: Software Development :: Testing
Classifier: Topic :: Software Development :: Libraries :: Python Modules

pyobject - 一个提供操作Python对象底层工具的Python包, 包含一些子模块。A utility tool with some submodules for operating internal python objects.

所包含模块 Included modules: 
============================

__init__ - 显示和输出Python对象的各个属性值

pyobject.browser - 以图形界面浏览Python对象

pyobject.code\_ - Python 字节码(bytecode)的操作工具

pyobject.search - 以一个对象为起点，搜索python对象

pyobject.newtypes - 定义一些新的类型 (实验性)

pyobj_extension(新增) - C扩展模块, 提供操作Python对象底层的函数

包含的函数 Functions:
=====================

describe(obj, level=0, maxlevel=1, tab=4, verbose=False, file=sys.stdout)::

    "描述"一个对象,即打印出对象的各个属性。
    参数说明:
    maxlevel:打印对象属性的层数。
    tab:缩进的空格数,默认为4。
    verbose:一个布尔值,是否打印出对象的特殊方法(如__init__)。
    file:一个类似文件的对象，用于打印输出。

browse(object, verbose=False, name='obj')::

    以图形方式浏览一个Python对象。
    verbose:与describe相同,是否打印出对象的特殊方法(如__init__)

函数browse()的图形界面如下所示：

.. image:: https://img-blog.csdnimg.cn/direct/3226cebc991a467f9844a1bafda9209d.png
    :alt: browse函数界面图片

objectname(obj)::

    objectname(obj) - 返回一个对象的名称,形如xxmodule.xxclass。
    如:objectname(int) -> 'builtins.int'

bases(obj, level=0, tab=4)::

    bases(obj) - 打印出该对象的基类
    tab:缩进的空格数,默认为4。

新增函数 New Functions:
=======================

make_list(start_obj, recursions=2, all=False)::

    创建一个对象的列表, 列表中无重复的对象。
    start:开始搜索的对象
    recursion:递归次数
    all:是否将对象的特殊属性(如__init__)加入列表

make_iter(start_obj, recursions=2, all=False)::

    功能、参数与make_list相同, 但创建迭代器, 且迭代器中可能有重复的对象。

search(obj, start, recursions=3)::

    从一个起点开始搜索对象
    obj:待搜索的对象
    start:起点对象
    recursion:递归次数

新增类: ``pyobject.Code``
==================================

类Code用于包装Python字节码对象(bytecode)，提供一个便利操作Python字节码的接口。

Python底层的bytecode对象，如func.__code__，是不可变的，鉴于此，Code类提供了一个可变的字节码对象，以及一系列操作字节码的函数，使得操作底层字节码对象变得更容易。

示例用法\: (从模块的doctest中摘取)::

    >>> def f():print("Hello")
    >>> c=Code.fromfunc(f) # 或 c=Code(f.__code__)
    >>> c.co_consts
    (None, 'Hello')
    >>> c.co_consts=(None, 'Hello World!')
    >>> c.exec()
    Hello World!
    >>>
    >>> import os,pickle
    >>> temp=os.getenv('temp')
    >>> with open(os.path.join(temp,"temp.pkl"),'wb') as f:
    ...     pickle.dump(c,f)
    ... 
    >>> f=open(os.path.join(temp,"temp.pkl"),'rb')
    >>> pickle.load(f).to_func()()
    Hello World!
    >>> 
    >>> c.to_pycfile(os.path.join(temp,"temppyc.pyc"))
    >>> sys.path.append(temp)
    >>> import temppyc
    Hello World!
    >>> Code.from_pycfile(os.path.join(temp,"temppyc.pyc")).exec()
    Hello World!


新增模块: ``pyobj_extension`` 
=============================

本模块使用了C语言编写。可直接使用import pyobj_extension, 导入该独立模块。其中包含的函数如下:

convptr(pointer)::

    将整数指针转换为Python对象，与id()相反。
	Convert a integer pointer to a Python object,as a reverse of id().

py_decref(object, n)::

	将对象的引用计数减小n。Decrease the reference count of an object for n.

py_incref(object, n)::

    将对象的引用计数增加n。Increase the reference count of an object for n.

*警告: 不恰当地使用这3个函数可能导致Python崩溃。*

*Warning:Improper use of the three functions above may lead to crashes.*

list_in(obj, lst)::

    判断obj是否在列表或元组lst中。与Python内置的obj in lst调用多次==运算符(__eq__)相比，
    本函数直接比较对象的指针，提高了效率。

版本:1.2.4

更新日志: 

2024-8-12(v1.2.4):针对pyobject.code_增加了对3.10及以上版本的支持；进一步优化了search模块的搜索性能，以及一些其他修复和改进。

2024-6-20(v1.2.3):更新了包内test目录下的.pyc文件加壳工具，并更新了pyobject.browser中的对象浏览器，添加了显示列表和字典项，后退、前进、刷新页面，以及新增、编辑和删除项等新特性。

2022-7-25(v1.2.2):增加了操作Python底层对象引用, 以及对象指针的C语言模块pyobj_extension。

2022-2-2(v1.2.0):修复了一些bug,优化了search模块的性能; code_中增加了Code类, browser中增加编辑属性功能, 增加了Code类的doctest。

源码:见 https://github.com/qfcy/Python/tree/main/pyobject

作者 Author: 七分诚意 qq:3076711200

作者CSDN主页: https://blog.csdn.net/qfcy\_/
