标签: introspection

内省函数以确定使用了哪个参数解包(位置或关键字)

我正在寻找一种方法来识别某些参数是否用于解包,我发现了这一点:

>>> def func_has_positional_args(func):
    std_args = func.func_code.co_argcount
    wildcard_args = len(func.func_code.co_varnames) - std_args
    if wildcard_args == 2:
        return True  # yes, has both positional and keyword args
    elif wildcard_args == 0:
        return False  # has neither positional, nor keyword args
    else:
        raise NotImplementedError('Unable to tell')


>>> func_has_keyword_args = func_has_positional_args
>>> def test1(a, b, *args, **kwargs): pass

>>> func_has_positional_args(test1), func_has_keyword_args(test1)
(True, True)
>>> def test2(a, b): pass

>>> func_has_positional_args(test2), func_has_keyword_args(test2)
(False, False)
>>> def test3(a, b, *args): pass

>>> func_has_positional_args(test3)

Traceback (most …
Run Code Online (Sandbox Code Playgroud)

python introspection argument-passing keyword-argument python-3.x

4
推荐指数
1
解决办法
246
查看次数

TypeScript / JavaScript - 如何获取类的超类?

假设我有:

class Foo {}
class Bar extends Foo {}
var clazz = Bar;
Run Code Online (Sandbox Code Playgroud)

我发现要到达Bar那里clazz.prototype.constructor

我如何找出 的父类是什么Bar

javascript reflection introspection superclass typescript

4
推荐指数
1
解决办法
5345
查看次数

列出内置函数和方法(Python)

我想出了这个:

[a for a in dir(__builtins__) if str(type(getattr(__builtins__,a))) == "<type 'builtin_function_or_method'>"]
Run Code Online (Sandbox Code Playgroud)

我知道它的丑陋.你能告诉我一个更好/更pythonic的方式吗?

python module introspection inspect

3
推荐指数
1
解决办法
373
查看次数

遍历从基础到所有后代的类层次结构

在我写的iOS应用程序中,我想遍历一个类层次结构来编制所有子类的清单.我的意图是NSStringForClass()在字典中使用每个子类类型作为键 - via - .

我的动机是能够自动发现基类的所有变体,以便我可以调用与该类相关的方法.出于分工的原因,我不想在这里使用方法覆盖.

是否可以进行这样的遍历?它会如何工作?

introspection objective-c class-hierarchy

3
推荐指数
1
解决办法
913
查看次数

如何列出TCL实例中的所有命名空间?

如何列出tclsh实例中加载的所有命名空间?

Chenz

namespaces introspection tcl

3
推荐指数
1
解决办法
1609
查看次数

Python函数如何确定是否(以及如何)显式传递了kwarg默认值?

假设一个函数spam有签名spam(ham=None).下面的三个调用都会导致局部变量hamspam名字空间中有值None:

spam()
spam(None)
spam(ham=None)
Run Code Online (Sandbox Code Playgroud)

如何spam找出实际使用这三种替代品中的哪一种?

python introspection

3
推荐指数
1
解决办法
91
查看次数

如何检查变量是否在D中声明?

如何检查变量是否存在,即已在D中声明?

背景是我想使用版本条件,但仍然有一个默认值:

version(A)
{
  immutable int var = 1;
}
version(B)
{
  immutable int var = 2;
}
// this is pseudo code
if (var is not yet declared)
{
  immutable int var = 3;
}
Run Code Online (Sandbox Code Playgroud)

我只是假设这在D中是可能的,因为它有如此多的内省......

d introspection conditional-compilation compile-time-constant

3
推荐指数
1
解决办法
124
查看次数

访问原始装饰功能以进行测试

我在视图函数中使用了一个装饰器(@render_to来自django_annoying包).

但问题是我想获取视图函数返回的原始dict用于测试目的,而不是HttpResponse装饰器返回的对象.

装饰者使用@wraps(从functools).

如果无法访问此内容,那么您是否知道如何测试?

python testing introspection decorator python-decorators

3
推荐指数
1
解决办法
750
查看次数

如何测试一个对象是一个函数还是一个未绑定的方法?

def is_unbound_method(func):
    pass

def foo(): pass

class MyClass(object):
    def bar(self): pass
Run Code Online (Sandbox Code Playgroud)

我可以把什么在体内is_unbound_method,使

is_unbound_method(foo) == False
is_unbound_method(MyClass().bar) == False
is_unbound_method(MyClass.bar) == True
Run Code Online (Sandbox Code Playgroud)

??

python introspection

3
推荐指数
1
解决办法
168
查看次数

使用Python创建JSON

我想用Python来创建JSON.

既然我找不到可以帮助我的库,我想知道是否可以检查Python文件中类的顺序?

# example.py
class Foo:
    pass

class Bar:
    pass
Run Code Online (Sandbox Code Playgroud)

如果我导入example,我想知道类的顺序.在这种情况下,它是[Foo,Bar]而不是[Bar,Foo].

这可能吗?如果"是",怎么样?

背景

我对yaml/json不满意.我有一个模糊的想法是通过Python类创建配置(只有类,而不是对象的实例化).

欢迎使用能够帮助我实现目标的答案(使用简单有趣的工具创建JSON).

python configuration introspection python-attrs

3
推荐指数
1
解决办法
689
查看次数