Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.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,我有一个超类(在框架中定义)。有人使用我的框架(通过pip安装)创建父类的子类。然后,它们初始化类的一个对象。我怎样才能找到进入该init的所有参数和值 class Parent(object): class Child(Parent): def __init__(self, arg_1, arg_2, some_object): pass obj = Child(2, {'some': 'dict'}, MyObject()) 有没有一种方法可以查看对象函数以查

我有一个超类(在框架中定义)。有人使用我的框架(通过pip安装)创建父类的子类。然后,它们初始化类的一个对象。我怎样才能找到进入该init的所有参数和值

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}