给定一个已经创建的对象,找出它是如何创建的最好方法是什么?基本上,我想弄清楚对象创建期间的实际参数(最终是传递给类init方法的实际参数)。
请注意,我在这里指的是实际参数,而不是形式参数。形式参数可能接受 20 个不同的参数,其中可能有 16 个是可选的,每个参数都有默认值。在实际调用中(即创建对象实例),可能只给出了5个参数,其中3个恰好与默认值相同。
我想做的是在创建对象后检索这 5 个参数及其值。
对于代码示例,假设感兴趣的类称为 Kmodel。Kmodel 构造函数接受 20 个不同的参数(其中 16 个不需要由调用者指定)。
在调用者的代码中,这将是这样的:
kmodel = Kmodel( param1 = 10, param2 = None, param3 = "name3", param4 = [1, 3, 5], param5 = dict("keyx": "valuey"}) ...
稍后调用一个方法找出调用Kmodel()的实际参数
figure_out_actual_params(kmodel)现在执行代码搞清楚:
def figure_out_acutal_params( kmodel ): ...
这是需要实现的代码来重构调用Kmodel创建的实际参数
- 我检查了检查模块。虽然检查可以输出大量信息,但我不清楚如何找出在实际创建对象 kmodel 期间提供的实际参数。
谢谢!
PS。请注意,关于此主题有几个类似的问题,我已全部阅读。我不认为这个问题是一样的。对于我的问题,我可以查询一个对象的所有内部对象属性,但在实际的对象构造过程中,我仍然无法分辨出指定了哪一个。(棘手的问题是实际参数可能恰好是默认值。)