【发布时间】:2017-09-01 21:07:37
【问题描述】:
这段代码:
import inspect
class Obj():
def c(self):
return 1
def b(self):
return 2
def a(self):
return 3
o = Obj()
for name, value in inspect.getmembers(o, inspect.ismethod):
print str(value())+" "+name
打印:
3 a
2 b
1 c
因为inspect.getmembers 在按名称排序的(名称,值)对列表中返回对象的所有成员,正如您在https://docs.python.org/2/library/inspect.html#inspect.getmembers 中所读到的那样
但我想以与成员在代码中写入的顺序相同的顺序获取该列表,换句话说,输出将是:
1 c
2 b
3 a
有什么办法吗?
谢谢
【问题讨论】:
-
继承呢?如果
o的方法定义在两个不同的类中,它们应该以什么顺序出现? -
这是哪个 Python 版本? Python 2 和 3 有非常不同的解决方案(甚至小版本也有差异)。