Python:如何检查……
Python: How to check that...?
我想要一些关于如何检查我收到的参数的正确性的建议。
检查将在c++中完成,所以如果有一个好的解决方案使用Boost。Python(最好)或C API,请告诉我。否则,请告诉我该对象应该具有哪些属性以确保它符合标准。
所以…
- 如何检查一个对象是否为函数?
- 如何检查对象是否为绑定方法? 如何检查一个对象是否为类对象?如何检查一个类对象是另一个类的子类?
当有疑问时,只需通过调用通常的Python内置函数并将其转换为C/c++来确定如何获得所需的效果。我只回答Python,对于C,你可以查找全局变量,比如'callable',然后像调用其他Python函数一样调用它。
-
为什么你要关心它是一个函数而不是任何其他类型的可调用?如果你想,你可以通过使用内置的
callable(f)
来发现它是否可调用,但当然,这不会告诉你调用它时需要传递哪些参数。这里最好的方法通常是调用它,看看会发生什么。 -
isinstance(f, types.MethodType)
,但这不会帮助,如果它是一个内置的方法。由于如何调用函数和绑定方法没有区别,您可能只是想检查它是否像上面那样可调用。 -
isinstance(someclass, type)
注意,这将包括内置类型 -
issubclass(someclass, baseclass)
我有两个非传统的建议:
1)不检查。Python的文化是根据需要简单地使用对象,如果它不起作用,则会发生异常。提前检查增加了开销,并且潜在地限制了人们如何使用你的代码,因为你的检查比你需要的更严格。
2)不要检查c++。当结合使用Python和C(或c++)时,我建议只在c++中做需要在那里做的事情。其他一切都应该在Python中完成。因此,检查Python包装器函数中的参数,然后调用未检查的c++入口点。
相关文章:
- valgrind-hellgrind与泄漏检查的结果不同
- C++模板来检查友元函数的存在
- 检查输入是否不是整数或数字
- 试图让变量检查数组中的某些内容
- 检查值是否在集合p1和p2中,但不在p3中
- C++概念:如何使用'concept'检查模板化结构的属性?
- 概念TS检查忽略私有访问修饰符
- 检查 std::shared_ptr<> 的当前底层类型是否为 T
- 在c++中检查长方体是否尽可能快地重叠(无迭代)
- 如何在C++中检查2D数组中负值的输入验证
- C++:正在检查LinkedList中的回文-递归方法-错误
- 使用for循环检查数组中的重复项
- 如何检查一个c++字符串中有多少相同的字符/数字
- 检查不带转换的扫描格式
- 如何检查线程是否锁定
- 清除前检查矢量
- 如何处理来自核心指南检查器的关于gsl::at的静态分析警告
- C++LDAP检查用户是否是特定组的成员
- 我如何循环循环switch语句检查重新检查char?(C )
- Visual Studio - 如何从 C++ 核心指南检查器检查路径中排除文件夹