y**b 发帖数: 10166 | 1 组里头目很迷恋python,我曾学了一阵,方便是方便,但总觉得动态类型、动态变量很
不习惯。比如一个类的实例,可以随便添加实例属性,各个实例可以拥有完全不同类型
的实例属性,好怪怪。
现在用来帮人refactor一些科学计算的程序(用python写的,用到numpy),忽然发现pyt
hon不支持多态,这对代码的设计岂不是一个非常大的限制?比如设计了10来个具有继承
关系的类来表示不同的计算模型,C++在主程序里面就只需一个基类指针就行了,
python
还得根据不同的类类型来决定创建不同的对象? |
X****r 发帖数: 3557 | 2 什么叫python不支持多态?Python使用动态类型,而不是静态类型。所有变量和参数都
不需要声明类型,只有到你试图调用它所不支持的方法才会出错。我看不出有任何情况会
比C++更不方便。
pyt
继承
【在 y**b 的大作中提到】 : 组里头目很迷恋python,我曾学了一阵,方便是方便,但总觉得动态类型、动态变量很 : 不习惯。比如一个类的实例,可以随便添加实例属性,各个实例可以拥有完全不同类型 : 的实例属性,好怪怪。 : 现在用来帮人refactor一些科学计算的程序(用python写的,用到numpy),忽然发现pyt : hon不支持多态,这对代码的设计岂不是一个非常大的限制?比如设计了10来个具有继承 : 关系的类来表示不同的计算模型,C++在主程序里面就只需一个基类指针就行了, : python : 还得根据不同的类类型来决定创建不同的对象?
|
y**b 发帖数: 10166 | 3 后来想了一会想明白了。因为python是动态类型、动态变量,相当于直接
就支持多态了,比C++还方便。
回过头来,C++之所以通过指针/引用搞一个多态,是因为指针/引用都是
静态类型(但是能动态管理内存),而且指针/引用并不包含对象的类型信息,
是吧?
况会
【在 X****r 的大作中提到】 : 什么叫python不支持多态?Python使用动态类型,而不是静态类型。所有变量和参数都 : 不需要声明类型,只有到你试图调用它所不支持的方法才会出错。我看不出有任何情况会 : 比C++更不方便。 : : pyt : 继承
|
X****r 发帖数: 3557 | 4 如果你问的是“通过指针/引用”的话,Python里几乎所有变量都是指针/引用。
如果你问的是静态类型的话,静态类型的好处是编译器可以很容易做类型检查。
【在 y**b 的大作中提到】 : 后来想了一会想明白了。因为python是动态类型、动态变量,相当于直接 : 就支持多态了,比C++还方便。 : 回过头来,C++之所以通过指针/引用搞一个多态,是因为指针/引用都是 : 静态类型(但是能动态管理内存),而且指针/引用并不包含对象的类型信息, : 是吧? : : 况会
|
g*****g 发帖数: 34805 | 5 另一个好处就是容易优化。
【在 X****r 的大作中提到】 : 如果你问的是“通过指针/引用”的话,Python里几乎所有变量都是指针/引用。 : 如果你问的是静态类型的话,静态类型的好处是编译器可以很容易做类型检查。
|
r****t 发帖数: 10904 | 6 胡说。
pyt
继承
【在 y**b 的大作中提到】 : 组里头目很迷恋python,我曾学了一阵,方便是方便,但总觉得动态类型、动态变量很 : 不习惯。比如一个类的实例,可以随便添加实例属性,各个实例可以拥有完全不同类型 : 的实例属性,好怪怪。 : 现在用来帮人refactor一些科学计算的程序(用python写的,用到numpy),忽然发现pyt : hon不支持多态,这对代码的设计岂不是一个非常大的限制?比如设计了10来个具有继承 : 关系的类来表示不同的计算模型,C++在主程序里面就只需一个基类指针就行了, : python : 还得根据不同的类类型来决定创建不同的对象?
|