类定义不是python中的静态语言功能

Is class definition not a static language feature in python?

本文关键字:静态 语言 功能 python 定义      更新时间:2023-09-26

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

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

但我觉得下面的代码在执行语句foo=Animal() 之前静态地指示名称类型(foo)是Animal类(object类的子类)

class Animal(object):
    pass
foo = Animal()

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

var foo = {}

我的问题:

1)

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

2)

对于JavaScript语句CCD_ 10&var b = "hai",var在运行时被分配了类型NumberString,是Number&CCD_ 15类似于CCD_;python中的str类?

3)

JavaScript是否在运行时为foo分配类型?

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

function Animal() {
    ;
}
var foo = new Animal()

它(非常粗略地说)创建一个新类型Animal,然后创建一个该类型的对象,就像Python代码一样。相比之下,与给定的Javascript代码最接近的Python等价物是

foo = object()

它生成一个普通对象并将其分配给CCD_ 20。

至于您的其他问题,NumberString类似于floatstr(尽管Javascript的基元类型和引用类型之间的差异没有Python的相似之处),并且Javascript为foo引用的对象分配了一个类型,但没有为foo变量分配类型。