我想得到一个类的所有实例变量的列表,而不需要创建该类的实例。我觉得这在Python中是不可能的。在
假设我有这样的课程:
class Person(object):
def __init__(self, fullname, age):
self.firstname, self.lastname = fullname.split(' ')
self.age = age
我想从这个列表中得到['lastname', 'age', 'firstname']
。在
我能够得到这个结果的唯一方法是使用Person
的临时实例:
这里的问题是,由于调用了fullname.split()
,如果我试图用Person(None, None)
创建一个空实例,则会引发一个错误。我不允许改变__init__
来允许这样做。在
我的第一个想法是使用vars(Person).keys()
,但是这给出了Person
类型的所有属性,而不是{
print vars(Person).keys()
# ['__module__', '__dict__', '__weakref__', '__doc__', '__init__']
有没有办法在不修改类的情况下,不使用temp
来完成这项工作?在
这取决于你有多想知道。例如,您可以fork/exec程序的一个新实例,实例化类,分析实例,并返回结果。在
您可以创建一个对象,该对象使用
__magic_methods__()
来检测它的哪些方法被调用(如.split()
),然后尝试猜测一个合适的输入类型。。。在但是你能调用一些知道实例数据的起始列表是什么的东西吗?没有
Python在执行
__init__
方法之前不知道将定义什么属性。为了执行该方法,必须创建类的实例。哦,好吧:(相关问题 更多 >
编程相关推荐