Python 按类属性的显示顺序列出它们

Python 按类属性的显示顺序列出它们,python,class,attributes,Python,Class,Attributes,我有一个类的元组,格式如下: 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)) 如何按照这些属性出现的相同顺序,创建元组类属性的列表 结果应该是: In: print(my_list) Out: [c, b, a] 我得到了这段代码,但结果列表是按字母顺序排序的:(所有类属性都是标准化的,所以我可以使用第一个类作为模型) 您可以使

我有一个
类的
元组,格式如下:

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))
如何按照这些属性出现的相同顺序,创建
元组
属性的
列表

结果应该是:

In: print(my_list)

Out: [c, b, a]
我得到了这段代码,但结果列表是按字母顺序排序的:(所有类属性都是标准化的,所以我可以使用第一个类作为模型)


您可以使用
inspect.getfullargspec

[41]中的
:类测试:
…:定义初始化(self,c=1,b=2,a=3):
…:通过
...:
在[42]中:检查.getfullargspec(测试)
Out[42]:FullArgSpec(args=['self','c','b','a'],varargs=None,varkw=None,默认值=(1,2,3),kwonlyargs=[],kwonlydefaults=None,注释={})
在[43]中:inspect.getfullargspec(Test.args)
Out[43]:['self','c','b','a']
编辑:

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

[62]中的
t=Test()
在[63]中:inspect.getfullargspec(t)#抛出类型错误
在[64]中:inspect.getfullargspec(类型(t))#调用类型
Out[64]:FullArgSpec(args=['self',c',b',a'],varargs=None,varkw=None,默认值=(1,2,3,4),kwonlyargs=[],kwonlydefaults=None,注释={})

它适用于您编写的类。出于某种原因,对于我拥有的
类的
元组
,它得到了一个
类型错误:不支持的可调用
不是可调用对象
顺便说一句,我已经导入了
inspect
。@DanielArges您可以迭代元组中的类吗/I只需要访问第一个类参数,因为它们是所有类的标准参数。当我使用
inspect.getfullargspec(my_tuple[0]).args时,我收到了不支持调用的消息。@DanielArges,执行
inspect.getfullargspec(type(my_tuple[0]))
In:print(inspect.getfullargspec(type(my_tuple[0]))
Out:FullArgSpec(args=['iterable',varargs=None,varkw None=None,默认值(()),kwyargs=[],kwonlydefaults=None,annotations={})
如果元组有
(class\u name(a=1,b=2,c=3),class\u name(c=4,b=5,a=6),class\u name(c=7,b=8,a=9))
,您是否仍然希望
[c,b,a]
作为
我的列表的输出?
?对于所有N
类,属性序列都是标准的,因此,我可以获得第一个
类的属性
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('__'))]