【问题标题】:Get list of attributes required to initialize an object of a class获取初始化类对象所需的属性列表
【发布时间】:2018-05-25 23:07:44
【问题描述】:

在 Python 中,有没有办法获取初始化类对象所需的属性列表?

例如我有以下课程:

class MyClass:
  def __init__(self, a, b, c):
    self.a = a
    self.b = b
    self.c = c

我想得到,

['a', 'b', 'c'] # These are required to initialize MyClass instance.

可能需要帮助,

<something>(MyClass)

或者,

MyClass.<something>

有一个关于从对象获取属性列表的讨论。 List attributes of an object 但我想知道,有没有办法获取初始化对象所需的属性列表?

【问题讨论】:

    标签: python class attributes initializer


    【解决方案1】:

    你可以使用inspect.getargspecs(YourClass.__init__):

    >>> import inspect
    >>> class Foo(object):
    ...     def __init__(self, a, b, c):
    ...         pass
    ... 
    >>> inspect.getargspec(Foo.__init__)
    ArgSpec(args=['self', 'a', 'b', 'c'], varargs=None, keywords=None, defaults=None)
    

    但是这不会告诉你太多关于 什么 abc 应该是。我怀疑这里有 XY 问题,所以你应该解释一下你试图用这个解决的问题。

    【讨论】:

      【解决方案2】:

      当然可以:

      class MyClass:
          def __init__(self, args):
             self.a = args[0]
             if len(args) > 1:
                 self.b = args[1]
             if len(args) > 2:
                 self.c = args[2]
      

      【讨论】:

      • 这如何准确回答问题?
      • @brunodesthuilliers:作者要求将列表传递给类并使用它来初始化值。我已经提供了...
      • 请重新阅读问题 - OP 要求的是“如何获取初始化类对象所需的属性列表” - 这实际上意味着(给定他的例子)“如何获取类初始化器期望的参数列表”。
      • 嗯,如果你这样说你是对的......虽然乍一看很模棱两可......
      猜你喜欢
      • 1970-01-01
      • 2013-10-28
      • 1970-01-01
      • 1970-01-01
      • 2016-01-12
      • 1970-01-01
      • 1970-01-01
      • 2021-12-17
      • 2019-10-31
      相关资源
      最近更新 更多