我了解到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
?
答案 0 :(得分:0)
Python和Javascript都是动态语言。动态语言不需要类型系统;动态语言的更多特征是在运行时而不是编译时创建类型。例如,与您给定的Python代码最接近的Javascript等价物
function Animal() {
;
}
var foo = new Animal()
(非常粗略地说)创建一个新类型Animal
,然后创建一个该类型的对象,就像Python代码一样。为了进行比较,您给定的Javascript代码的最近Python等价物将是
foo = object()
创建一个普通对象并将其分配给foo
。
至于您的其他问题,Number
和String
类似于float
和str
(尽管Javascript&#39的基元和参考类型之间的差异并不是&# 39; t有一个Python模拟),Javascript为foo
引用的对象分配一个类型,但不为foo
变量赋予。