类定义不是python中的静态语言特性吗?

时间:2014-04-17 01:40:26

标签: javascript python

我了解到python是一种动态语言。为此,我的意思是,在执行时将类型(类)分配给名称(符号)。

""" In below statement,var becomes ref variable of var object which is of 
   class 'int' at execution time"""
var = 3

但我觉得下面的代码静态地表明在执行语句foo

之前,名称类型(Animal)是object类(foo=Animal()类的子类)
class Animal(object):
    pass

foo = Animal()

在JavaScript下面,相应的代码只是在没有任何类帮助的情况下创建一个对象,我认为JavaScript没有类似python的类层次结构概念(说object class是{{1的父类} / str / int / dict子类),这又是静态语言的感觉。

Animal

我的问题:

1)

你认为python是一种动态语言吗?

2)

对于JavaScript声明var foo = {} & var a = 3,var在运行时分配了var b = "hai"Number类型,是String& Number String之类的内容int python中的str类?

3)

JavaScript是否在运行时将类型分配给foo

1 个答案:

答案 0 :(得分:0)

Python和Javascript都是动态语言。动态语言不需要类型系统;动态语言的更多特征是在运行时而不是编译时创建类型。例如,与您给定的Python代码最接近的Javascript等价物

function Animal() {
    ;
}

var foo = new Animal()

(非常粗略地说)创建一个新类型Animal,然后创建一个该类型的对象,就像Python代码一样。为了进行比较,您给定的Javascript代码的最近Python等价物将是

foo = object()

创建一个普通对象并将其分配给foo

至于您的其他问题,NumberString类似于floatstr(尽管Javascript&#39的基元和参考类型之间的差异并不是&# 39; t有一个Python模拟),Javascript为foo引用的对象分配一个类型,但不为foo变量赋予。