最近我遇到了SQLModel包裹。它结合了 pydantic 和 sqlalchemy 功能来处理数据库对象。
我在documentation中注意到了什么是用于声明模型类的 table=True
参数:
from typing import Optional
from sqlmodel import Field, SQLModel, create_engine
class Hero(SQLModel, table=True):
id: Optional[int] = Field(default=None, primary_key=True)
name: str
secret_name: str
age: Optional[int] = None
我永远无法理解这种参数是什么以及它是如何工作的。
它是如何命名的以及如何自己实现它?
我在声明类时看到了 metaclass
关键字,但我认为有一个严格的
可用关键字列表。但看起来它是相当可配置的。
这个问题与SQLModel
没有直接关系,而是与一般python
功能相关。
任何有关此事的信息或链接将不胜感激。
最佳答案
此行为基于您可以在用作元类
的类
中定义的__init_subclass__
方法。看下面的例子:
class MyMetaClass:
def __init_subclass__(cls, foo=None):
super().__init_subclass__()
cls.foo = foo
class MyActualClass(MyMetaClass, foo='baz'):
pass
instance = MyActualClass()
print(instance.foo) # "baz"
您可以在 python 官方文档中找到有关此内容的更多详细信息:https://docs.python.org/3/reference/datamodel.html#customizing-class-creation
关于python - 类声明参数在 python 中如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71626903/