一个提供操作Python底层对象工具的模块。A tool of operating internal python object with some submodules.
Project description
pyobject - 一个提供操作Python底层对象工具的Python包, 包含一些子模块。A tool of operating internal python object with some various submodules.
所包含模块 Included modules:
__init__ - 打印出Python对象的各个属性
pyobject.browser - 以图形方式浏览Python对象
pyobject.code_ - Python bytecode的操作工具
pyobject.search - 搜索python对象
pyobject.newtypes - 定义一些新的类型
pyobj_extension(新增) - 操作Python底层对象引用, 以及对象指针的模块, 使用C语言编写
包含的函数 Functions:
describe(obj, level=0, maxlevel=1, tab=4, verbose=False, file=sys.stdout, mode=’w’ encoding=’utf-8’):
"描述"一个对象,即打印出对象的各个属性。 参数说明: maxlevel:打印对象属性的层数。 tab:缩进的空格数,默认为4。 verbose:一个布尔值,是否打印出对象的特殊方法(如__init__)。 file:一个类似文件的对象。
browse(object, verbose=False, name=’obj’):
以图形方式浏览一个Python对象。 verbose:与describe相同,是否打印出对象的特殊方法(如__init__)
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.newtypes.Code
用法: (下面的示例是从doctest中摘取的):
>>> def f():print("Hello") >>> c=Code.fromfunc(f) >>> 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 using of three functions above may cause Python to crash.
版本:1.2.2
更新日志:
2022-7-25(v1.2.2):增加了操作Python底层对象引用, 以及对象指针的C语言模块pyobj_extension。
2022-2-2(v1.2.0):修复了一些bug,优化了search类的性能; pyobject.code_中增加了Code类,browser中增加编辑属性功能, 增加了Code类的测试。
源码:见 https://github.com/qfcy/Python/tree/main/pyobject
作者 Author: 七分诚意 qq:3076711200
作者CSDN主页: https://blog.csdn.net/qfcy_/
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Hashes for pyobject-1.2.2-cp313-cp313-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 92e28f79fb6aea29a55afb1222ad05cde88622fbdd7543327dec639e008300c3 |
|
MD5 | 56ca999f629a45a36e06f444210b7eeb |
|
BLAKE2b-256 | 26a9731b1dccf2d8955110728c961510a98665566ea06028df93842646fced12 |
Hashes for pyobject-1.2.2-cp312-cp312-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7aa18ab6f802c3bd0fc887a5efee435076df78f2d8290a1adc777e6d38736a09 |
|
MD5 | be087dabc58841912dcc68a9787668bd |
|
BLAKE2b-256 | 19ac16d2c851e93fa479b710b94e9f635ae2610389be1b4ffd8a7e641f73188b |
Hashes for pyobject-1.2.2-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4ef3fe33c599bdf9a1ca9796be474912be98c9626d75427451351b76ac0561cb |
|
MD5 | d3c8ec786379c224dd1b811f675a611b |
|
BLAKE2b-256 | 135abadb8b28cda8894462fb5c192338235c26e0ffba88cb101c4f133aa2b49b |
Hashes for pyobject-1.2.2-cp311-cp311-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e30e5e15ebb8df58d8c5b2b1887ef91b5e33338e1c8fc3387f9620068d007fe8 |
|
MD5 | 51bedfde222a9854b685e25512132725 |
|
BLAKE2b-256 | 65af82d6819a2a65b7a7436323db979275f54b74b8ba2ad7791f1776d7bb08cc |
Hashes for pyobject-1.2.2-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d245af0edf5e467c19fb5f1cd73342014a1e3482dd14a763663dbf11cd3f677a |
|
MD5 | 145c954a994229b06d625a5ead532764 |
|
BLAKE2b-256 | 59521bfa623acf641fc16911a69733d792b72e49cf762d70cfb3ba0c7e4f590e |
Hashes for pyobject-1.2.2-cp310-cp310-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4d5f247778c51fb9c37ac2fc1dc5ac8120bdd81f991a9f379bce2482fd7fee99 |
|
MD5 | 446bf0ad7ba3276a52a3ee7623de0835 |
|
BLAKE2b-256 | 03a1c1c73f6867a1ff0e25736ea4547512bcbf21a3a963636d5644935e2a9b22 |
Hashes for pyobject-1.2.2-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5bc31f7cf41eaf13e9148d76f2e10380721fe473d1adb27a08e629ca3811db2e |
|
MD5 | 5407f73f55cc5edf07967db3ab88c73a |
|
BLAKE2b-256 | 81b9f200525a66fced9c1d0b6d82bae298647a7253ef35287ebb48d916390dc0 |
Hashes for pyobject-1.2.2-cp39-cp39-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 523e69268df98c99ca974852f4c1817848e10e13f4d35dddb739cc9c19652e01 |
|
MD5 | eacc037834fe51106c53fb35edcf5f6d |
|
BLAKE2b-256 | 8e00c136d4864b5f7570fccbdfc2e5559c62ce165c4341f48a0fde08d9f2d270 |
Hashes for pyobject-1.2.2-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 50c1af029dfba08757809d5e4dc8ec3a906a381b25cbcafb837055cb3b1eafe6 |
|
MD5 | f733824fdf288db64c0aa962b0f4a85f |
|
BLAKE2b-256 | 397613214b55f4bb6d391fdd4c961cd98937a3b970c8dffaadab151ddf955f18 |
Hashes for pyobject-1.2.2-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6988c76aed8ebbb7b4e3c3e97d51cf710c8645e934c923c000c7246120ffbd6e |
|
MD5 | 25309a4b5d159afe8e31c06f74833a38 |
|
BLAKE2b-256 | ab4ecff1750f3159861fde87ba22d936a02c1744fe27d46b999204278bbcf125 |
Hashes for pyobject-1.2.2-cp37-cp37m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e4bc4a79fe6e5906b63e693d50ef9e698ccf135c92451ab08aa0dde7b20e3394 |
|
MD5 | 2af0ed874c5be2ebc33d5ec75ee2802d |
|
BLAKE2b-256 | 6b1942d3ab1b2da4e5cd5a29fd90e651cd172ec5d5ce9245530a0090b9f3996a |
Hashes for pyobject-1.2.2-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 996163e8283ded8af0937ef2f7e0e7583010ff9ec2e829f729d8bfcad8e157ff |
|
MD5 | 381e57bc0252c64777a0145e1d97918e |
|
BLAKE2b-256 | 42682a720a63e0294c3e2dbcecd7f394a21158988c1a0bb26c356c2cac8c4402 |
Hashes for pyobject-1.2.2-cp36-cp36m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e38f17de5bd1deb91036d91216bc8eeaaf009b8093f8b6e68f2486092e2adfd5 |
|
MD5 | c990bd266c9e2e2c46444eae2d5cb43e |
|
BLAKE2b-256 | c5c8581848803a9ea6d23d71d7897e7f1800c3fa7160365a6ce578708e5d7362 |