Python - 返回构造函数参数名称而不实例化

时间:2016-03-20 13:35:37

标签: python parameters constructor python-2.x

假设我已经使用构造函数定义了一个类。

class Person:

    def __init__(self, name="", age=0):
        self.__name = name
        self.__age = age

现在我想创建一个Person的实例,但是假设我忘记了应该传递给构造函数的内容。 由于我已经定义了默认参数,我可以做

dummy_person = Person()
print dummy_person.__init__.__code__.co_varnames

这将让我看到什么是参数,以便我可以创建一个新的Person,这次通过相应的名称和年龄。

问题是:如何在不首先实例化dummy_person的情况下实现类似的结果?换句话说:我可以通过只知道类名来访问构造函数的参数列表吗?

修改:以下是我计划使用此功能的方法。

args_names = CircleTrajectory.__init__.__code__.co_varnames[1:]
args = {}
for arg_name in args_names:
    args.append(float(input("Insert " + arg_name + ": ")))

my_circle = CircleTrajectory(*args)

为此,我们需要定义一个CircleTrajectory类,我们需要假设它的构造函数的所有参数都是浮点数。最后一个假设并不完全吸引我,但我认为它是安全的,因为所有这些对象都需要由最终用户通过在GUI中键入值来创建。

2 个答案:

答案 0 :(得分:0)

只需访问实际班级Person上的相同媒体资源:

>>> Person.__init__.__code__.co_varnames
('self', 'name', 'age')

答案 1 :(得分:0)

您可以使用help(Person)help(Person.__init__)