如何在python中以列表的形式获取类的所有属性

车站

我在Python中有以下课程。

class RULES(object):
    TOTAL_REQUESTS = 'totalrequests'
    HTML_SIZE = 'htmlsize'
    JS_SIZE = 'jssize'
    JS_COUNT = 'jscount'
    DOMAIN_COUNT = 'domaincount'
    REQ_PER_DOMAIN = 'reqperdomain'
    DOMAIN_WITH_MAX_REQUESTS = 'domainwithmaxrequests'
    IMAGE_SIZE = 'imagesize'
    IMAGE_COUNT = 'imagecount'
    HIGHEST_LATENCY_OBJECT = 'highestlatencyobject'
    LARGEST_SIZE_OBJECT = 'largestsizeobject'
    VARY_HEADER_OBJECTS = 'varyheaderobjects'
    ERROR_RESPONSES = 'errorresponses'
    COOKIE_REQUESTS = 'cookierequests'
    TTFB_REQUESTS = 'ttfb_requests'
    UNCACHED = 'uncached'
    UNCOMPRESSED = 'uncompressed'
    SPRITABLE = 'spritable'
    MULTIPLE_REQUESTS = 'multiplerequests'
    INLINABLE = 'inlinable'
    NO_SERVER_CACHE = 'noservercache'
    MORE_TTL = 'morettl'
    MEDIAN_LOAD_TIME = 'median_load_time'
    AVG_LOAD_TIME = 'avgloadtime'
    DNS = 'dns'
    HOST_TTL = 'host_ttl'
    ORIGIN_TTL = 'origin_ttl'
    THIRD_PARTY_HTTPS_REQ = 'thirdpartyhttpsreq'

现在,我需要编写一种方法来遍历所有属性并将它们作为列表返回。我尝试访问单个属性为

RULES.HOST_TTL,但请确定如何遍历它们。python中有没有一种方法可以做到这一点。

米吉尔森

使用该dir功能。它可能会为您提供比您想要的更多的东西,但是您可以对其进行过滤(例如,仅输入ALL_CAPS个单词)。

样本:

>>> class RULES(object):
...     TOTAL_REQUESTS = 'totalrequests'
...     HTML_SIZE = 'htmlsize'
...     JS_SIZE = 'jssize'
...     JS_COUNT = 'jscount'
...     DOMAIN_COUNT = 'domaincount'
...     REQ_PER_DOMAIN = 'reqperdomain'
...     DOMAIN_WITH_MAX_REQUESTS = 'domainwithmaxrequests'
...     IMAGE_SIZE = 'imagesize'
...
>>> import re
>>> all_caps = re.compile('^[A-Z_]+$')
>>> [attr for attr in dir(RULES) if all_caps.match(attr)]
['DOMAIN_COUNT', 'DOMAIN_WITH_MAX_REQUESTS', 'HTML_SIZE', 'IMAGE_SIZE', 'JS_COUNT', 'JS_SIZE', 'REQ_PER_DOMAIN', 'TOTAL_REQUESTS']

一旦有了名称,就很容易获得价值:

[getattr(RULES, attr) for attr in dir(fules) if all_caps.match(attr)]

最后,如果您愿意使用其他类型,则可以在此处使用枚举enum直到python3.4才被添加到标准库中,但是python2.x有反向移植我相信您的要求将如下所示:

class RULES(enum.Enum):
    X = 'foo'
    Y = 'bar'
    # ...

 for name, attr in RULES.__members__.items():
     print(name, attr.value)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在 ES6 javascript 类中的泛型方法中获取所有 getter setter 属性的列表或数组?

获取Python中类的所有属性

如何在单个集合中获取grails域类的所有持久属性及其约束?

如何在同一个基类的方法中获取所有属性?

如何在Python中获取类的类方法的所有名称

如何从python类中的实例变量中获取所有值的列表

如何从多个类中获取所有相同的属性?

如何仅在类中获取所有属性名称

如何提取/获取本体中的所有术语(类/属性)

如何获取Python当前模块中所有类的列表?

如何在python中获取大小为k的列表的所有组合(其中k>列表的长度)?

如何获取属于 Python 3 中特定类的所有属性(继承的除外)的值

如何在Python中匹配字符串后获取列表中的所有元素

如何在Python中获取列表中的所有最高整数

如何在通用Lisp中获取类的所有实例?

如何在iModel.js中获取所有类

如何在跨度类中获取所有标签innerHTML

从类中获取所有静态属性

如何在Java中获取.class的所有属性?

如何在ActionFilter中获取参数的所有属性?

如何在javascript中获取文件对象的所有属性?

如何在Swift中获取所有静态属性?

如何在python中按顺序获取类的所有成员?

如何在Laravel 5.3中获取所有视图的列表?

如何在ios中获取所有UTC缩写的列表?

如何在 Prestashop 中获取所有附件列表

如何获取所有Wikidata属性的列表?

如何在python中删除所有unicode表示形式

如何在python-elasticsearch中获取所有索引的列表