如何在Python中为类dict对象实现类似Node的.运算符访问与自动补全
Python实现字典属性访问+编辑器自动补全的方案
1. 标准库方案(无需安装第三方依赖)
1.1 dataclasses(Python 3.7+ 推荐)
适合需要可变属性的场景,提前定义结构后即可实现点访问+自动补全
from dataclasses import dataclass @dataclass class Person: name: str sex: str age: int person = Person(name='felix', sex='m', age=12) # 直接输入person.即可触发编辑器补全name、sex、age属性 print(person.name)
1.2 typing.NamedTuple
不可变结构,适合不需要修改属性的场景
from typing import NamedTuple class Person(NamedTuple): name: str sex: str age: int person = Person(name='felix', sex='m', age=12) print(person.name)
1.3 types.SimpleNamespace
适合快速将现成字典转为支持点访问的对象,无需提前定义类
from types import SimpleNamespace person_dict = {'name':'felix','sex':'m','age':12} person = SimpleNamespace(**person_dict) print(person.name)
2. 第三方库方案(适合生产项目)
pydantic
除了支持自动补全外,还自带类型校验、序列化/反序列化能力,是当前Python后端开发的常用工具
- 安装:
pip install pydantic - 使用示例:
from pydantic import BaseModel class Person(BaseModel): name: str sex: str age: int person = Person(name='felix', sex='m', age=12) print(person.name)
注意事项
原生Python字典是动态结构,编辑器无法提前预知其存在的键,因此无法实现自动补全。上述所有方案本质都是通过静态类型定义,让编辑器可以提前推断出可用属性,从而触发补全提示。
内容的提问来源于stack exchange,提问作者5h007
相关产品推荐
相关产品推荐

