美文网首页
Python、JS、TS、C# 对比

Python、JS、TS、C# 对比

作者: 李霖弢 | 来源:发表于2022-07-22 11:08 被阅读0次
    • 手头暂时没有C# 环境,以后会补全
    内容\语言 Python JS TS C#
    强/弱类型 强类型
    不可动态转换
    弱类型
    可动态转换
    弱类型
    可动态转换
    强类型
    不可动态转换
    动/静态类型 动态类型
    变量可赋值其他类型
    动态类型
    变量可赋值其他类型
    静态类型
    变量不可赋值其他类型
    静态类型
    变量不可赋值其他类型
    变量提升
    声明关键词 可用varletconst
    严格模式下必须使用
    必用 varletconst 直接通过数据类型进行声明
    相等 1 != "1"
    1 == True
    2 == False
    [] == [] () == ()
    {} == {} (字典)
    1 == "1"
    1 == true
    2 == false
    [] != []
    {} != {}
    同JS
    全等 is
    is not
    ===
    !==
    同JS
    in 100 in [100,200]
    "name" in {"name":"jack"}
    0 in [100,200]
    "name" in {"name":"jack"}
    同JS
    布尔判断 bool([]) is False bool(()) is False
    bool({}) is False (字典)
    Boolean([]) === true
    Boolean({}) === true
    同JS
    接口
    可通过.pyi文件规范数据类型 无
    通过interface 定义接口
    类通过 implements 实现接口,其他通过: 实现
    抽象类 通过metaclass=abc.ABCMeta定义抽象类
    通过@abc.abstractmethod定义抽象方法
    通过abstract定义抽象类
    通过abstract定义抽象方法
    多重继承 通过extends单独继承 通过extends单独继承
    构造函数 __init__
    子类隐式通过super().__init__()调用父类构造函数(super详见MRO)
    constructor
    子类隐式通过super()调用父类构造函数
    constructor
    子类必须显式通过super()调用父类构造函数
    类成员 类属性可以被类和实例访问
    类方法需要用@classmethod装饰,第一个参数指向类
    直接在类中定义,又称原型成员(位于classprototype),可以被类和实例访问
    ES7中废弃
    无,同ES7
    实例成员 * 在方法中通过self定义
    * 为实例直接赋值
    实例方法第一个参数指向实例
    * 在方法中通过this定义
    * 为实例直接赋值
    * ES7中类中直接定义的属性也为实例属性
    实例方法中this指向实例
    * 直接在类中定义
    * 在方法中通过this定义
    * 为实例直接赋值
    实例方法中this指向实例
    静态成员 通过@staticmethod装饰静态方法(无selfcls参数)
    不支持静态属性
    通过static修饰
    ES6只有静态方法,ES7支持静态属性
    静态方法中this指向类
    通过static修饰
    静态方法中this指向类
    私有成员 __开头命名则类似private * 默认为public
    * private则不能在类结构之外被访问
    * protected类似private,但允许在子类结构内访问

    相关文章

      网友评论

          本文标题:Python、JS、TS、C# 对比

          本文链接:https://www.haomeiwen.com/subject/jtwuirtx.html