获取实例变量名的列表

2024-03-28 13:06:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我想得到一个类的所有实例变量的列表,而不需要创建该类的实例。我觉得这在Python中是不可能的。在

假设我有这样的课程:

class Person(object):
    def __init__(self, fullname, age):
        self.firstname, self.lastname = fullname.split(' ')
        self.age = age

我想从这个列表中得到['lastname', 'age', 'firstname']。在

我能够得到这个结果的唯一方法是使用Person的临时实例:

^{pr2}$

这里的问题是,由于调用了fullname.split(),如果我试图用Person(None, None)创建一个空实例,则会引发一个错误。我不允许改变__init__来允许这样做。在

我的第一个想法是使用vars(Person).keys(),但是这给出了Person类型的所有属性,而不是{}的实例所具有的属性:

print vars(Person).keys()
# ['__module__', '__dict__', '__weakref__', '__doc__', '__init__']

有没有办法在不修改类的情况下,不使用temp来完成这项工作?在


Tags: 实例selfnone列表age属性initvars
2条回答

这取决于你有多想知道。例如,您可以fork/exec程序的一个新实例,实例化类,分析实例,并返回结果。在

您可以创建一个对象,该对象使用__magic_methods__()来检测它的哪些方法被调用(如.split()),然后尝试猜测一个合适的输入类型。。。在

但是你能调用一些知道实例数据的起始列表是什么的东西吗?没有

Python在执行__init__方法之前不知道将定义什么属性。为了执行该方法,必须创建类的实例。哦,好吧:(

相关问题 更多 >