python - 使用额外的自定义方法创建一个列表,在 python 3.8 但不是 3.9 中出现错误
问题描述
我正在尝试创建一个类对象,它本质上是一个由给定 TypedDict 格式化的字典列表。出席类示例如下所示:
from typing import TypedDict, List, get_args
class Database(List):
def __init__(self, *args):
super().__init__(args)
self.name = self.__class__.__name__
def add_entry(self, entry: dict, **kwargs) -> dict:
for key, value in kwargs.items():
entry[key] = value
self.append(entry)
return entry
def search(self, lastest=True, **kwargs) -> dict:
<method stuff>
class Attending(TypedDict):
attending_username: str
attending_email: str
attending_phone: str
class Attendings(Database[Attending]):
pass
attendings = Attendings()
这在 3.9 中有效,但在 3.8 中它给了我以下错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\Jakda\pyfiles\class\repos\heart-rate-sentinel-server-richardson-reyes\database.py", line 51, in <module>
class Attendings(Database[Attending]):
File "C:\Users\Jakda\.conda\envs\serv\lib\typing.py", line 261, in inner
return func(*args, **kwds)
File "C:\Users\Jakda\.conda\envs\serv\lib\typing.py", line 897, in __class_getitem__
_check_generic(cls, params)
File "C:\Users\Jakda\.conda\envs\serv\lib\typing.py", line 211, in _check_generic
raise TypeError(f"{cls} is not a generic class")
TypeError: <class 'database.Database'> is not a generic class
我对课程有点陌生,所以我真的不明白这里发生了什么。有没有更好的方法来写这个?为什么要检查这是否是泛型类?
解决方案
推荐阅读
- java - okhttp 不允许设置内容类型
- swift - ScrollView isScrollEnabled 循环在 webView 中失败
- node.js - 如何访问和处理我已发布到端点的图像文件?我发送的 formData 对象似乎是空的
- python-3.x - 对 Pandas Dataframe 使用 TextBlob 翻译功能的问题
- java - Java类中的“def”是什么
- sql - Sybase SQL 不在 & 空
- python - Python 在启动时自动运行文件
- javascript - iframe Click 事件仅在页面加载 Javascript 后有效
- django - Django:values_list(flat=True) 但对于多个字段
- python - Python Selenium 的 send_keys 函数在切换到 ReCaptcha v2 复选框后不会触发键(选中该框)