【问题标题】:Get names of *args in a python method [duplicate]在python方法中获取*args的名称[重复]
【发布时间】:2017-06-13 06:04:41
【问题描述】:

我不确定这是否可能。但是假设我有一些带有构造函数的python类,如下所示:

class SomeClass(object):

    def __init__(self, *args):
        pass
        # here I want to iterate over args
        # get name of each arg

假设我在某处使用这个类并创建它的一个实例:

some_var = SomeClass(user, person, client, doctor)

我的意思是获取 arg 的名称,是获取名称('user'、'person'、'client' 和 'doctor')

我的意思是获取参数的字符串名称。其中 user、person 等是一些带有属性等的 python 对象,但我只需要这些变量(对象)的命名方式。

【问题讨论】:

  • 那为什么不直接传入一个字符串呢? SomeClass("user", "person", "client", "doctor")?
  • 您可以为此使用 kwargs
  • @Sweeper,不,我的意思是那些参数是对象,它们只是命名为“用户”等
  • @ArpitSolanki,是的,我知道,但我想知道是否可以不使用 kwargs。
  • 所以不能改调用码?

标签: python python-3.x


【解决方案1】:
  • *args 当你不确定有多少参数将被传递给你的函数时应该使用
  • **kwargs 可让您处理未事先定义的命名参数(kwargs = 关键字参数)

所以**kwargs是一个添加到参数的字典。

https://docs.python.org/3/tutorial/controlflow.html#arbitrary-argument-lists

【讨论】:

    【解决方案2】:

    像这样使用**kwargssetattr

    class SomeClass(object):
        def __init__(self, **kwargs):
            for key, value in kwargs.items():
                setattr(self, key, value)
    

    您还可以访问关键字和值,无论它们是哪种类型。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-24
      • 2021-11-07
      • 1970-01-01
      • 1970-01-01
      • 2018-02-06
      • 2023-03-10
      • 2010-10-19
      相关资源
      最近更新 更多