[英]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
tuple
的classes
屬性?
結果應該是:
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.