[發明專利]Python的屬性解析方法及裝置有效
| 申請號: | 201610080212.4 | 申請日: | 2016-02-04 |
| 公開(公告)號: | CN105760161B | 公開(公告)日: | 2019-01-08 |
| 發明(設計)人: | 鄧慧 | 申請(專利權)人: | 網易(杭州)網絡有限公司 |
| 主分類號: | G06F8/30 | 分類號: | G06F8/30 |
| 代理公司: | 北京博浩百睿知識產權代理有限責任公司 11134 | 代理人: | 宋子良 |
| 地址: | 310000 浙江省杭州*** | 國省代碼: | 浙江;33 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | python 屬性 解析 方法 裝置 | ||
1.一種Python的屬性解析方法,其特征在于,包括:
步驟一,讀取用戶輸入的變量名,并從所述變量名中解析出根屬性名及其下各級屬性名;
步驟二,在預設位置查找所述根屬性名,并返回對應變量;
步驟三,根據返回的變量的類型查找下一級屬性名,并返回對應變量;
重復執行所述步驟三,直至查找到葉子級屬性名返回的變量,
其中,在預設位置查找所述根屬性名,并返回對應變量包括以下至少之一:讀取當前的Python棧幀的本地表,查找是否存在所述根屬性名,如果存在所述根屬性名,則返回對應變量;讀取當前的C棧幀的局部變量引用,查找是否存在所述根屬性名,如果存在所述根屬性名,則返回對應變量。
2.根據權利要求1所述的方法,其特征在于,在預設位置查找所述根屬性名,并返回對應變量還包括以下至少之一:
查找當前可見的符號,如果存在所述根屬性名,則必定屬于C的全局變量C_global,返回對應變量;
查找Python的系統模塊sys.modules表,如果存在所述根屬性名對應的模塊,則返回對應的模塊變量。
3.根據權利要求1所述的方法,其特征在于,根據返回的變量的類型查找下一級屬性名,并返回對應變量包括以下至少之一:
設a為上一步中返回的變量,b為所述下一級屬性名,則
當a的類型為Python通用類型時,如果該類型含有__dict__屬性,將其取出,然后在其中查找所述下一級屬性名,如果找到,返回對應變量,其中__dict__為當前變量類型的屬性字典;
當a的類型為Python通用類型時,如果Python通用類型的C結構聲明當中有成員members聲明,則將members在所述Python通用類型當中的地址偏移與a地址相加,并返回相加后的地址;
當a的類型為Python.list時,如果Python通用類型無法找到所述下一級屬性名且所述下一級屬性名的類型是數字類型,則將a當中的ob_item地址加上b對應的數字并作為一個地址返回;
當a的類型為Python.dict時,如果Python通用類型無法找到b,則利用python.dict本身提供的方法計算b的哈希hash值,利用所述hash值跟python.dict提供的hash查找算法,查找是否b存在其中,如果存在,返回相應的值;
當a的類型為Python的C擴展類型時,如果Python通用類型無法找到b,則在a對應的C擴展類型聲明當中查找是否存在b,如果存在,將b的地址偏移與a地址相加,并返回相加后的地址;
當a的類型為通用的C結構時,找到C結構的聲明,查找其中是否存在b,如果存在,將b的地址偏移與a地址相加,并返回相加后的地址;
當a的類型為C數組時,如果b是數字,則將b*size(a)+a返回,其中size(a)表示a的長度;
當a的類型為std::vector時,如果b是數字,則將b*size(a的模板template值類型)與a地址相加的元素起始地址返回;
當a的類型為std::map時,使用紅黑樹的查找方法,利用a的parent,left,right屬性查找是否存在b,如果存在,返回對應變量;
當a的類型為std::tr1::unordered_map時,計算b的hash值,找到所述hash值對應的bucket,在所述bucket對應的鏈表當中查找是否存在b,如果存在,返回對應變量。
4.根據權利要求1所述的方法,其特征在于,在讀取用戶輸入的變量名,并從所述變量名中解析出根屬性名及其下各級屬性名之前,還包括:
發布所述Python的屬性解析方法對應的插件。
5.根據權利要求4所述的方法,其特征在于,發布所述Python的屬性解析方法對應的插件包括:
將所述Python的屬性解析方法對應的插件復制至gdb插件的根目錄下;
初始化所述Python的屬性解析方法對應的插件。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于網易(杭州)網絡有限公司,未經網易(杭州)網絡有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201610080212.4/1.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:鞋類自動開啟模具機構
- 下一篇:全自動豆漿機





