鱼C论坛

 找回密码
 立即注册
查看: 4900|回复: 26

[已解决]TypeError: 'type' object is not subscriptable

[复制链接]
发表于 2023-4-22 14:39:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
代码:
def f(a: tuple[int, int]) -> int:
    return a[0]+a[1]
最佳答案
2023-4-22 15:23:42

试试这个呢?
from typing import Tuple

def f(a: Tuple[int, int]) -> int:
    return a[0]+a[1]

print(f((1,2)))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-22 14:56:06 | 显示全部楼层
本帖最后由 sfqxx 于 2023-4-22 14:58 编辑

错误信息“TypeError:'type' object is not subscriptable”表示您尝试在类型对象上使用下标符号(即方括号[]),这是不允许的,因为类型是不可变的,并且没有可以使用索引访问的元素。

在给定的代码中,没有语法错误,但由于输入参数或函数调用,似乎可能会引发此TypeError。

为了解决此错误,请确保将整数元组作为参数传递给“f()”函数。您可以使用内置的“type()”函数在将其传递到函数之前检查参数的数据类型来验证这一点。

例如:
# correct usage
arg = (2, 3)
print(f(arg))  # output: 5
# incorrect usage
arg = [2, 3]   # not a tuple!
print(f(arg))  # raises TypeError
有用请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-22 15:09:13 | 显示全部楼层
sfqxx 发表于 2023-4-22 14:56
错误信息“TypeError:'type' object is not subscriptable”表示您尝试在类型对象上使用下标符号(即方括 ...


我都没调用函数,他就报错,就是定义完就报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2023-4-22 15:09:30 | 显示全部楼层
有什么问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-22 15:09:45 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-22 15:11:26 | 显示全部楼层
本帖最后由 liuhongrun2022 于 2023-4-22 15:14 编辑

能用啊
>>> def f(a: tuple[int, int]) -> int:
    return a[0]+a[1]

>>> f((1,2))
3
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-22 15:14:12 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-22 15:14:23 | 显示全部楼层
歌者文明清理员 发表于 2023-4-22 15:09
我都没调用函数,他就报错,就是定义完就报错

截个图好吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-22 15:15:48 | 显示全部楼层

人工判断已启动,请看7楼
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-22 15:16:38 | 显示全部楼层


GPT:(不一定对)
您提供的代码中,使用了类型注解 tuple[int, int] 来表示参数类型为包含两个整数的元组,返回值类型为整数。在 Python 3.7 中,不支持 tuple[int, int] 等泛型类型注解,因此会报错。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-22 15:18:38 | 显示全部楼层
是不是用了中文符号
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-22 15:19:12 | 显示全部楼层

得py3.8????哎,我不想再改python版本了,py3.12>py3.11>py3.10>py39>py38>py37每个版本都蹭过,这就是我之前在py399的代码,现在简化函数还是报错

解决方案?(我问过我的chatgpt了,和sfqxx的一样)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-22 15:20:22 | 显示全部楼层
sfqxx 发表于 2023-4-22 15:18
是不是用了中文符号

temp.PNG
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-22 15:20:24 | 显示全部楼层
歌者文明清理员 发表于 2023-4-22 15:19
得py3.8????哎,我不想再改python版本了,py3.12>py3.11>py3.10>py39>py38>py37每个版本都蹭过,这就 ...

我的py3.10能用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-22 15:21:08 | 显示全部楼层

def f(a:tuple[int, int]) -> int:
    return a[0]+a[1]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-22 15:21:55 | 显示全部楼层
空格去掉试试
还是看我们人类吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-22 15:23:24 | 显示全部楼层

解决方案?我记得好像是注解(annotions),但是
Python 3.7.8rc1 (tags/v3.7.8rc1:5f3933d61d, Jun 17 2020, 16:59:29) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>> from __future__ import annotions
SyntaxError: future feature annotions is not defined
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-22 15:23:42 | 显示全部楼层    本楼为最佳答案   

试试这个呢?
from typing import Tuple

def f(a: Tuple[int, int]) -> int:
    return a[0]+a[1]

print(f((1,2)))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-22 15:23:55 | 显示全部楼层
sfqxx 发表于 2023-4-22 15:21
空格去掉试试
还是看我们人类吧

liu说了,是版本问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-22 15:25:18 | 显示全部楼层

啊可以
现在已经找到了问题,annotions拼错了,看图:
temp.PNG
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-29 09:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表