Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从对象实例检索参数值_Python - Fatal编程技术网

Python 从对象实例检索参数值

Python 从对象实例检索参数值,python,Python,如果我有一个类A的实例,是否有必要知道实例化该实例时使用了哪些参数 我查看了inspect模块,有一些工具可以很快关闭,但不太正确。例如,inspect.getargvalues(frame)几乎可以工作,只是您只能从类本身中获取frame。我想在事后得到这些 理想情况下,我想要的是: 实例_a=ClassA(参数) 检查。获取\u值\u设置\u到\u初始化(实例\u a) 如果可以避免,我不想保存init语句中的参数 如果有一种完全不同的方法,我应该说一下我希望这样做的原因:我希望能够通过保存

如果我有一个类A的实例,是否有必要知道实例化该实例时使用了哪些参数

我查看了
inspect
模块,有一些工具可以很快关闭,但不太正确。例如,
inspect.getargvalues(frame)
几乎可以工作,只是您只能从类本身中获取
frame
。我想在事后得到这些

理想情况下,我想要的是:

实例_a=ClassA(参数)

检查。获取\u值\u设置\u到\u初始化(实例\u a)

如果可以避免,我不想保存init语句中的参数


如果有一种完全不同的方法,我应该说一下我希望这样做的原因:我希望能够通过保存参数(使用上面想象的函数)来重新创建对象的“副本”,然后通过将完全相同的参数传递到init来实例化一个新对象。Pickle、Shelve和Marshall不起作用,因为我的对象显然是不可分解的。

为什么不能从定义的类检索创建的对象的状态?一个比inspect简单得多的解决方案是在实例化时使用类装饰器获取init的参数。但是,我完全同意Ignacio-为什么需要这个?用户定义的对象通常是可pickle的--尝试时会出现什么错误?我在问题的底部添加了“为什么”。我想创建一个“副本”对象,需要知道哪些值被发送到init。decorator选项在Google中出现,但目前有点超出了我的python……你能详细说明一下吗?@mgilson:my object是一个
dict
的子类,有大量的附加方法。在我所有的泡菜/架子/马歇尔尝试中,我完全被错误所包围。我甚至不记得那些错误了。