在学python之前一直把动态语言和静态语言的区别理解为要写int char这样的预定义类型的就是静态语言,而可以不用事先声明数据类型的则是动态语言,直到看到了这个:
python是动态语言,实例创建出来之后仍然可以被绑定其他属性,即使类中没有规定。Java/C#是静态语言,实例创建出来后属性就固定了,有什么属性是类规定好了的,不允许改变。
当一个Student类创建之后,它的内部的字段属性只有name和score,如果在java(静态语言)中,是无法使用bart.age这样的方式给student这个类动态的添加一个字段的(可以使用继承的方式扩展一个新的含有age属性的student2类,java可以在运行时修改类中属性的值,但是无法在运行时修改student这个类中的属性的,也就是不能给它新增字段或者删掉字段):可以看到age属性为红色,代表异常,
所以个人认为动态语言和静态语言本质上的区别在于,能否在运行时“绑定”新的属性,而提前声明数据类型个人觉得属于强类型和弱类型的差别,即隐式转化。
同时动态语言还存在一种“鸭子类型”,即动态语言对继承体系要求不严格:一个对象只要“看起来像鸭子,走起路来像鸭子”那么它就可以被看作是鸭子
python:(python中的继承是直接将父类当作参数传给子类)
class Student():
def grade(self):
prin