You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中实现类似Ruby的.class判断字面量(literal)类型?

在Python中判断字面量类型的方法

嘿,这个问题我太懂了!Ruby里用.class获取字面量类型,在Python里有几个对应的实用方式,最常用的是这两个:

1. type()函数——最接近Ruby的.class

这是最直接的替代方案,它会返回字面量所属的精确类对象,和Ruby里.class的行为几乎一致。用法非常简单,直接把字面量作为参数传入就行:

# 整数字面量
print(type(123))          # 输出 <class 'int'>
# 字符串字面量
print(type("Python"))     # 输出 <class 'str'>
# 浮点数字面量
print(type(3.14))         # 输出 <class 'float'>
# 列表字面量
print(type([1, 2, 3]))    # 输出 <class 'list'>
# 字典字面量
print(type({"key": "val"})) # 输出 <class 'dict'>
# 布尔字面量
print(type(False))        # 输出 <class 'bool'>

如果想直接拿到类的名称字符串,再加个.name即可:

print(type(123).name)  # 输出 'int'

2. isinstance()函数——考虑继承关系的判断

如果你的需求是判断字面量是否属于某个类型(包括子类),那isinstance()会更合适。比如在Python里,bool是int的子类,用isinstance(True, int)会返回True,但type(True) is int会返回False——这一点和Ruby的.class有区别,Ruby里true.class只会返回TrueClass,不会考虑继承层级。

举个例子:

print(isinstance(True, int))    # 输出 True
print(type(True) is int)        # 输出 False
print(isinstance(42, object))   # 输出 True(所有Python对象都是object的子类)

总结一下:如果只是想获取字面量的精确类型,用type()就完全对应Ruby的.class;如果需要判断类型归属(含继承),就用isinstance()。

内容的提问来源于stack exchange,提问作者user130268

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:40:20