【问题标题】:How to get *args variable names in a class?如何在类中获取 *args 变量名?
【发布时间】:2020-01-03 12:15:44
【问题描述】:

我有一个类可以压缩给定的值来执行计算,它会返回一个字典,其中包含每个变量的结果。虽然**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() 有一个可能的解决方案,但它很长而且似乎根本没有效率。

【问题讨论】:

标签: python class global-variables args


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2022-01-05
    • 1970-01-01
    • 2013-11-07
    • 2014-06-20
    • 1970-01-01
    • 2021-09-25
    • 1970-01-01
    • 2018-07-30
    • 1970-01-01
    相关资源
    最近更新 更多