从c++的角度看,Python中的重载构造函数
Overloaded constructor in Python from C++ perspective
有这样的代码:
#include <iostream>
class SomeClass
{
int someInteger;
float someFloat;
public:
SomeClass(int someInteger_)
{
// do something for int
std::cout << "Int constructorn";
}
SomeClass(float someFloat_)
{
// do something for float
std::cout << "Float constructorn";
}
};
int main()
{
SomeClass a(2);
SomeClass b(2.0f);
return 0;
}
当传递构造函数的float或int参数时,创建someeclass类的对象是不同的。Python中也有类似的类:
class SomeClass:
someInteger = 0
someFloat = 0.0
def __init__(self, value):
# I want to do different things when int or float is passed
print value
a = SomeClass(2)
b = SomeClass(2.0)
一般的问题是-如何使函数行为依赖于类型传递的参数?
使用isinstance
:
>>> isinstance(1, int)
True
>>> isinstance(1, float)
False
>>> isinstance(1.1, float)
True
>>> isinstance(1.1, int)
False
或者构造函数:
def __init__(self, value):
if isinstance(value, int):
# int constructor
elif isinstance(value, float):
# float constructor
else:
raise TypeError, 'Unexpected type'
相关文章:
- 继承函数的重载解析
- 如何运行位于boost/libs/python/example/tutorial目录中的hello.cpp和Jamfil
- Pybind11:将元组列表从Python传递到C++
- 你能重载对象变量名本身返回的内容吗
- 从父命名空间重载类型
- 使用C++中的模板和运算符重载执行矩阵运算
- 为什么这个运算符<重载函数对 STL 算法不可见?
- 如何在c++中使用引用实现类似python的行为
- 重载操作程序时出错>>用于类中的字符串 memebr
- GDB Python解析重载方法
- 用于C++运算符重载的Python绑定
- 使用重载函数将 Python 'int'提升为 C++ int
- Boost.Python 包装器中的纯虚拟重载运算符
- 在重载函数上构建Python C++扩展失败
- Python中的魔术方法(dunder)与C++中的运算符重载相同吗
- 提振.Python静态方法重载
- 从c++的角度看,Python中的重载构造函数
- 使用 Boost.Python 包装时 Eigen's 运算符 ()() 的重载分辨率
- 提升Python - 具有默认参数问题的重载函数
- 如何在Python中重载不正确的c++虚函数时从SWIG中获得正确的错误