相关疑难解决方法(0)

在python中分离类定义和实现

我是Python初学者,我的主要语言是C++.您知道在C++中,将类的定义和实现分开是很常见的.(How)Python会这样做吗?如果没有,如何获得一个类的接口的干净的配置文件?

python

6
推荐指数
1
解决办法
1923
查看次数

如何内省Cython C扩展模块中定义的函数

Python的inspect模块似乎无法检查"内置"函数的签名,其中包括C扩展模块中定义的函数,如Cython定义的函数.有没有办法获得你在这样一个模块中定义的Python函数的签名,特别是在Cython中?我希望能够找到可用的关键字参数.

MWE:

# mwe.pyx
def example(a, b=None):                                                                                                                                                       
    pass       
Run Code Online (Sandbox Code Playgroud)

import pyximport; pyximport.install()                                                                                                                                         
import mwe                                                                                                                                                                    
import inspect                                                                                                                                                                

inspect.signature(mwe.example)   
Run Code Online (Sandbox Code Playgroud)

收益率:

Traceback (most recent call last):                                                                                                                                           
  File "mwe_py.py", line 5, in <module>                                                                                                                                      
    inspect.signature(mwe.example)                                                                                                                                           
  File "/nix/store/134l79vxb91w8mhxxkj6kb5llf7dmwpm-python3-3.4.5/lib/python3.4/inspect.py", line 2063, in signature                                                         
    return _signature_internal(obj)                                                                                                                                          
  File "/nix/store/134l79vxb91w8mhxxkj6kb5llf7dmwpm-python3-3.4.5/lib/python3.4/inspect.py", line 1965, in _signature_internal                                               
    skip_bound_arg=skip_bound_arg)                                                                                                                                           
  File "/nix/store/134l79vxb91w8mhxxkj6kb5llf7dmwpm-python3-3.4.5/lib/python3.4/inspect.py", line 1890, in _signature_from_builtin                                           
    raise ValueError("no signature found for builtin {!r}".format(func))                                                                                                     
ValueError: no signature found for builtin <built-in function example>    
Run Code Online (Sandbox Code Playgroud)

在Python 3.4.5和Cython 0.24.1中

python introspection cython python-c-extension

5
推荐指数
1
解决办法
1599
查看次数

如何以编程方式确保函数包含 return 语句?

如何验证函数是否包含return关键字?我经常忘记返回行,所以我担心我的包的用户在提供基于函数的输入时也会忘记。

def appler():
    a = "apple"
    # `return` is missing

def bananer():
    b = "banana"
    return b
Run Code Online (Sandbox Code Playgroud)

我可以为最后一行解析函数的实际代码字符串,其中包含"return"但不是很健壮(它可能由注释触发)。

def validate_funk(funk):
    if condition_to_check_that_it_contains_rtrn:
        pass
    else:
        raise ValueError(f"Yikes - The function you provided not contain a `return` statement:\n\n{funk}")
Run Code Online (Sandbox Code Playgroud)
>>> validate_funk(appler)
#triggers ValueError

>>> validate_funk(bananer)
# passes
Run Code Online (Sandbox Code Playgroud)

编辑:理想情况下不运行该功能。

python function

5
推荐指数
1
解决办法
182
查看次数

循环Python/IronPython对象方法

循环Python对象的方法并调用它们的正确方法是什么?

鉴于对象:

class SomeTest():
  def something1(self):
    print "something 1"
  def something2(self):
    print "something 2"
Run Code Online (Sandbox Code Playgroud)

python reflection ironpython introspection python-datamodel

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

在python中找出类实例中可用的函数?

如何动态地找出从类的实例定义了哪些函数?

例如:

class A(object):
    def methodA(self, intA=1):
        pass

    def methodB(self, strB):
        pass

a = A()
Run Code Online (Sandbox Code Playgroud)

理想情况下,我想找出实例'a'有methodA和methodB,以及它们采用哪些参数?

python introspection

2
推荐指数
1
解决办法
2096
查看次数