【发布时间】:2021-01-23 08:47:35
【问题描述】:
有许多解决方案可用于覆盖实例上的方法。但是对于 pydantic BaseModel 的对象,这似乎是有问题的。这是一个简单的例子:
from pydantic import BaseModel
class Dog(BaseModel):
def bark(self):
print("WOOF")
def new_bark():
print("WoOoOoF!!")
运行方法:
>>> boby = Dog()
>>> boby.bark()
WOOF
覆盖方法:
>>> boby.bark = new_bark
>>> boby.bark()
ValueError: "Dog" object has no field "bark"
预期结果将是打印的# WoOoOoF!!。如果 Dog 没有继承 pydantics BaseModel 你会得到预期的结果。
这可能吗?
【问题讨论】:
-
不应该用一个参数定义 new_bark 吗?