sva*_*mol 4 object python-3.x pydantic
from pydantic import BaseModel, Field, HttpUrl
from typing import Optional
class TestClass(BaseModel):
url:Optional[HttpUrl] = None
Run Code Online (Sandbox Code Playgroud)
使用 url="https://www.test.com" 创建对象 TestClass 是可行的。
这里导入的HttpUrl或者BaseModel都是类。当我尝试独立创建 httpurl 对象时,它给出了 typeerror,例如下面的。
from pydantic import HttpUrl
myurl = HttpUrl("https://www.test.com")
Run Code Online (Sandbox Code Playgroud)
为什么它不能像上面那样用于将字符串转换为 http 对象。它会导致错误,例如: need keywords-only args if that isprovided then 2positionalprovided required 3
ale*_*roz 11
UPD 2023-10-30 (thanks Christoph H.) In Pydantic 2 you should use a TypeAdapter, since parse_obj_as was deprecated.
ta = TypeAdapter(HttpUrl)
url = ta.validate_strings("test.com")
Run Code Online (Sandbox Code Playgroud)
(Only Pydantic 1.X) You can use parse_obj_as method. This way there will be fewer dependencies:
from pydantic import parse_obj_as, HttpUrl
url = parse_obj_as(HttpUrl, "https://www.test.com")
Run Code Online (Sandbox Code Playgroud)