我正在寻找一种方法来识别某些参数是否用于解包,我发现了这一点:
>>> 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
假设我有:
class Foo {}
class Bar extends Foo {}
var clazz = Bar;
Run Code Online (Sandbox Code Playgroud)
我发现要到达Bar那里clazz.prototype.constructor。
我如何找出 的父类是什么Bar?
我想出了这个:
[a for a in dir(__builtins__) if str(type(getattr(__builtins__,a))) == "<type 'builtin_function_or_method'>"]
Run Code Online (Sandbox Code Playgroud)
我知道它的丑陋.你能告诉我一个更好/更pythonic的方式吗?
在我写的iOS应用程序中,我想遍历一个类层次结构来编制所有子类的清单.我的意图是NSStringForClass()在字典中使用每个子类类型作为键 - via - .
我的动机是能够自动发现基类的所有变体,以便我可以调用与该类相关的方法.出于分工的原因,我不想在这里使用方法覆盖.
是否可以进行这样的遍历?它会如何工作?
假设一个函数spam有签名spam(ham=None).下面的三个调用都会导致局部变量ham的spam名字空间中有值None:
spam()
spam(None)
spam(ham=None)
Run Code Online (Sandbox Code Playgroud)
如何spam找出实际使用这三种替代品中的哪一种?
如何检查变量是否存在,即已在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
我在视图函数中使用了一个装饰器(@render_to来自django_annoying包).
但问题是我想获取视图函数返回的原始dict用于测试目的,而不是HttpResponse装饰器返回的对象.
装饰者使用@wraps(从functools).
如果无法访问此内容,那么您是否知道如何测试?
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来创建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).
introspection ×10
python ×6
d ×1
decorator ×1
inspect ×1
javascript ×1
module ×1
namespaces ×1
objective-c ×1
python-3.x ×1
python-attrs ×1
reflection ×1
superclass ×1
tcl ×1
testing ×1
typescript ×1