如何在类中获取 *args 变量名?



我有一个类,它压缩给定的值来执行计算,它返回一个字典,其中包含每个变量的结果。虽然**kwargs可以用来轻松获取变量名,但如果我只想使用原始变量名,这似乎真的很不方便。因此,我想仅在需要指定变量名称时才使用**kwargs

期望的结果:

>> a = 1; b = 2; c = 3
>> x = myClass(a,b,d=c) # variable names saved as a list during initialisation
>> x.result()
{'a': 1, 'b': 2, 'd': 3}

输入是pyspark对象,因此类应直接获取赋值的变量而不是值。此外,预计每个输入都指向一个唯一的对象。

有一个使用inspect.getouterframes()的可能解决方案,但它很长,似乎根本没有效率。

如果我能理解,你想知道用作函数调用参数的外部变量名称。 在我看来,这不是一个好主意,因为您正在耦合范围外和内。

我认为最好定义一个调用协议,比如字典,并将其用作函数的参数。

def f1(params = None): 
keys = None 
ret = {}
if (params is not None) and (isinstance(params, dict)):  
keys = params.keys()
for k in keys:
<<do your job>>
ret[k] = value
return ret

最新更新