最近我遇到了SQLModel包。它結合了pydantic與sqlalchemy資料庫物件一起使用的功能。我在檔案中注意到的是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特征相關。
任何有關此事的資訊或鏈接將不勝感激。
uj5u.com熱心網友回復:
此行為基于__init_subclass__您可以在class用作 的 a中定義的方法metaclass。看下面的例子:
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
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/450464.html
下一篇:使用字串名稱實體化C#類物件
