Python 如何获取函数中使用的参数值
我有一个超类(在框架中定义)。有人使用我的框架(通过pip安装)创建父类的子类。然后,它们初始化类的一个对象。我怎样才能找到进入该init的所有参数和值Python 如何获取函数中使用的参数值,python,Python,我有一个超类(在框架中定义)。有人使用我的框架(通过pip安装)创建父类的子类。然后,它们初始化类的一个对象。我怎样才能找到进入该init的所有参数和值 class Parent(object): class Child(Parent): def __init__(self, arg_1, arg_2, some_object): pass obj = Child(2, {'some': 'dict'}, MyObject()) 有没有一种方法可以查看对象函数以查
class Parent(object):
class Child(Parent):
def __init__(self, arg_1, arg_2, some_object):
pass
obj = Child(2, {'some': 'dict'}, MyObject())
有没有一种方法可以查看对象函数以查看它使用了哪些值?(对象不是由我创建的……因此,即使查看self.whates也不能保证在该函数调用中使用所有值)
您可以获取传递到子类中的用户参数及其值,如下所示:
class MyClass():
定义初始化(self,arg1,arg2=2):
self.arg1=arg1
self.arg2=arg2
self.user_args=dict([(key,val)表示key,val表示locals().items()
if key!=“self”和key!=“类”])
#定义其他_方法()。。。
然后,当用户创建自己的类时,您可以:
print(用户类、某些对象、用户参数)
#{'arg1':5,'arg2':10}
如果您试图同时获取
UserClass
参数,那么即使可靠,也会涉及更多的内容;一个主要的复杂问题是,MyClass
作为参数传递给UserClass
,而不是继承,这意味着,MyClass
首先被实例化,然后被设置为UserClass
的属性。换句话说,就MyClass
而言,UserClass
并不存在
我认为在不继承的情况下获取
UserClass
args的一种方法是,对运行时生成的pycache
进行反编译,可以通过globals()
从MyClass
中访问,但这并不容易,你可以得到类似
的东西,你可以使用dis
反汇编程序来解析输出。你说的“使用”是什么意思?你的意思是想知道它是否接受了一个参数,但没有做任何事情?@jornsharpe告诉你它接受的参数,而不是它使用的参数。@Barmar当然,但在示例中它实际上没有使用任何参数,OP的预期输出仍然只是签名绑定。
some_magic(obj.__init__)
# {arg_1: 2, arg_2: {'some': 'dict'}, some_object: MyObject_instance}