关于oop:从Python中的构造函数__init__中引入参数

Introspecting arguments from the constructor function __init__ in Python

什么是从__init__提取参数而不创建新实例的方法。
代码示例:

1
2
3
class Super:
    def __init__(self, name):
        self.name = name

我看起来像Super.__dict__.keys()类型的解决方案。 只是为了检索名称参数信息而不添加任何值。 有这样的选择吗?


您可以使用inspect

1
2
3
4
>>> import inspect
>>> inspect.getargspec(Super.__init__)
ArgSpec(args=['self', 'name'], varargs=None, keywords=None, defaults=None)
>>>

编辑:inspect.getargspec实际上并不创建Super的实例,见下文:

1
2
3
4
5
6
7
8
import inspect

class Super:
    def __init__(self, name):
        print 'instantiated'
        self.name = name

print inspect.getargspec(Super.__init__)

这输出:

1
2
3
### Run test.a ###
ArgSpec(args=['self', 'name'], varargs=None, keywords=None, defaults=None)
>>>

请注意,instantiated从未打印过。