繁体   English   中英

按出现的顺序列出 class 属性

[英]make a list of class attributes in the order they appear

我有以下格式的classes tuple

In: print(my_tuple)

Out: (class_name(c=1, b=2, a=3),class_name(c=4, b=5, a=6),class_name(c=7, b=8, a=9))

如何按照这些属性出现的顺序list tupleclasses属性?

结果应该是:

In: print(my_list)

Out: [c, b, a]

我有这个代码,但结果列表按字母顺序排序:(所有类属性都是标准化的,所以我可以使用第一个 class 作为模型)

attributes = inspect.getmembers(class_name[0], lambda a:not(inspect.isroutine(a)))
my_list = [a[0] for a in attributes if not(a[0].startswith('__') and a[0].endswith('__'))]

您可以使用inspect.getfullargspec

In [41]: class Test:
    ...:     def __init__(self, c=1, b=2, a=3):
    ...:         pass
    ...:

In [42]: inspect.getfullargspec(Test)
Out[42]: FullArgSpec(args=['self', 'c', 'b', 'a'], varargs=None, varkw=None, defaults=(1, 2, 3), kwonlyargs=[], kwonlydefaults=None, annotations={})

In [43]: inspect.getfullargspec(Test).args
Out[43]: ['self', 'c', 'b', 'a']

编辑:

如果您正在处理 class 的实例,您可以像这样在type而不是实例本身上调用它:

In [62]: t=Test()

In [63]: inspect.getfullargspec(t)  # Throws TypeError

In [64]: inspect.getfullargspec(type(t))  # Call on type
Out[64]: FullArgSpec(args=['self', 'c', 'b', 'a'], varargs=None, varkw=None, defaults=(1, 2, 3, 4), kwonlyargs=[], kwonlydefaults=None, annotations={})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM