栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

获取类的属性

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

获取类的属性

尝试检查模块。

getmembers
并且各种测试应该会有所帮助。

编辑:

例如,

class MyClass(object):    a = '12'    b = '34'    def myfunc(self):        return self.a>>> import inspect>>> inspect.getmembers(MyClass, lambda a:not(inspect.isroutine(a)))[('__class__', type), ('__dict__',  <dictproxy {'__dict__': <attribute '__dict__' of 'MyClass' objects>,   '__doc__': None,   '__module__': '__main__',   '__weakref__': <attribute '__weakref__' of 'MyClass' objects>,   'a': '34',   'b': '12',   'myfunc': <function __main__.myfunc>}>), ('__doc__', None), ('__module__', '__main__'), ('__weakref__', <attribute '__weakref__' of 'MyClass' objects>), ('a', '34'), ('b', '12')]

现在,特殊的方法和属性引起了我的共鸣-可以通过多种方式来处理这些方法和属性,其中最简单的方法就是根据名称进行过滤。

>>> attributes = inspect.getmembers(MyClass, lambda a:not(inspect.isroutine(a)))>>> [a for a in attributes if not(a[0].startswith('__') and a[0].endswith('__'))][('a', '34'), ('b', '12')]

…,其中更复杂的可以包括特殊的属性名称检查甚至元类;)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/646828.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号