如何在遮蔽类型符号的函数中访问该类型符号?
如何在被遮蔽内置类型的函数内部访问原类型?
当函数参数名(比如int)和内置类型重名导致遮蔽时,有两种通用方法可以拿到原类型:
直接使用
__builtins__模块
所有Python内置类型都存放在__builtins__这个内置模块里,不管函数内部有没有遮蔽同名标识符,都能通过它获取原类型。示例:def foo(int): # 获取被遮蔽的原int类型 original_int = __builtins__.int # 验证:原类型和参数里的int不是同一个对象 print(original_int is int) # 输出False # 正常使用原类型创建实例 num = original_int(456) print(type(num) is original_int) # 输出True这个方法是通用的,哪怕你没法轻松创建该类型的实例,直接取类型本身就行,不需要依赖实例的
type()方法。提前在函数外部保存原类型引用
如果函数定义前能提前拿到原类型,可以先保存一个引用,后续在函数内部直接用:# 提前保存原int类型的引用 original_int = int def foo(int): print(original_int is int) # 输出False print(original_int(789)) # 输出789这种方法适合你能提前预知会被遮蔽的类型的场景。
不管是int还是其他内置类型(比如str、list),这两种方法都适用,能解决“无法轻松创建实例”的通用情况。
内容的提问来源于stack exchange,提问作者namesis
相关产品推荐
相关产品推荐

