您的位置 首页 > 数码极客

如何获得一个类的全部属性

一、模块

是一个全局字典,python启动后就将该字典加载在内存中,每当导入新的模块时都将记录这些导入模块。字典对于加载模块起到了缓冲的作用。

拥有字典所拥有的一切方法。如:

import sys print([__name__]) print(.values()) print(.keys()) print(.items()) #示例 print(.get("demo2")) #输出 <module 'demo3' from 'G:\\BaiXXXYuan\\BaiXXXXYuanApi\\demo3.py'>

二、inspect模块

inspect模块主要提供了四种用处:

1.对对象进行类型检查

2.获取源码

3.获取类或者函数的参数信息

4.解析堆栈

  • in(object[, predicate])返回一个包含对象的所有成员(name, value)的列表。返回的内容比对象的 dict 包含的内容多,源码是通过dir()实现的。predicate是一个可选的函数参数,只有predicate函数判断为True的成员才被返回。
  • predicate一般调用以下16个方法in(object): 是否为模块 in(object):是否为类 in(object):是否为方法(bound method written in python) in(object):是否为函数(python function, including lambda expression) in(object):是否为python生成器函数 in(object):是否为生成器 in(object): 是否为traceback in(object):是否为frame in(object):是否为code in(object):是否为built-in函数或built-in方法 in(object):是否为用户自定义或者built-in函数或方法 in(object):是否为抽象基类 indescriptor(object):是否为方法标识符 in(object):是否为数字标识符,数字标识符有__get__ 和__set__属性; 通常也有__name__和__doc__属性 in(object):是否为getset descriptor in(object):是否为member descriptor
  • inspect其他方法1. in(object): 获取object的documentation信息 2. in(object) 3. in(object): 返回对象的文件名 4. in(object):返回object所属的模块名 5. in(object): 返回object的python源文件名;object不能使built-in的module, class, mothod 6. in(object):返回object的python源文件代码的内容,行号+代码行 7. in(object):以string形式返回object的源代码 8. in(doc):

三、python获取模块中所有类的实例

demo2文件

class A(): def __init__(self): = "A" def run(self): print()

demo3文件

class D(): def __init__(self): = "D" def d(self): print()

demo文件

from demo import A import demo2 import inspect import sys ​ class B(A): ​ def __init__(self): = "B" ​ def run(self): print() ​ ​ class C(A): ​ def __init__(self): = "C" ​ def run(self): print() ​ ​ if __name__ == '__main__': print(.get("demo3")) class_list = [] print(in([__name__], in)) print(in(.get("demo3"), in)) for name, class_ in in([__name__], in): cla(class_) class_().run() ​ print(class_list) ​ ​ #输出 <module 'demo3' from 'G:\\BaiGuoYuan\\BaiGuoYuanApi\\demo3.py'> [('A', <class 'demo2.A'>), ('B', <class '__main__.B'>), ('C', <class '__main__.C'>)] [('D', <class 'demo3.D'>)] A B C [<class 'demo2.A'>, <class '__main__.B'>, <class '__main__.C'>]

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“如何获得一个类的全部属性”边界阅读