Python 如何查看一个变量的类型注释信息?

我本以为 Pythontyping 只是一个注释,但是因为 pydantic 可以校验变量的类型,显然这个 typing 不仅仅是一个注释这么简单,pydantic 是怎么发现一个变量的类型注释是 str 还是 int 还是 list 呢?我们又该如何通过代码知道一个对象的类型注释是什么?

pydantic 文档

from datetime import datetime
from typing import List, Optional
from pydantic import BaseModel


class User(BaseModel):
    id: int
    name = 'John Doe'
    signup_ts: Optional[datetime] = None
    friends: List[int] = []


external_data = {
    'id': '123',
    'signup_ts': '2019-06-01 12:22',
    'friends': [1, 2, '3'],
}
user = User(**external_data)
print(user.id)
#> 123
print(repr(user.signup_ts))
#> datetime.datetime(2019, 6, 1, 12, 22)
print(user.friends)
#> [1, 2, 3]
print(user.dict())
"""
{
    'id': 123,
    'signup_ts': datetime.datetime(2019, 6, 1, 12, 22),
    'friends': [1, 2, 3],
    'name': 'John Doe',
}
"""
阅读 2.1k
1 个回答

方法、类及对象是有一个属性叫做 __annotations__,可以得到类型注释。比如:

def add(a: int, b: int) -> int:
    return a + b

add.__annotations__ # => {'a': int, 'b': int, 'return': int}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题