Python的类与字典
本文最后更新于85 天前,其中的信息可能已经过时,如有错误请发送邮件到 2915475627@qq.com

Python上手学习的时候对于不同流式格式返回,遇到了 chunk[‘content’] 和 chunk.content ,直接把我绕晕了,单独把类与字典,以及他们对应的格式梳理一下。

类的内部需要定义属性和方法,而且属性通常是在类的初始化方法里一起定义的。

class Person:
    def __init__(self, name):
        # 定义属性
        self.name = name

    def say_hi(self):
        # 定义方法
        print(f"Hi, my name is {self.name}")

类调用属性和方法都用点。

# 创建对象
p = Person("Alice")

# 访问属性
print(p.name)

# 调用方法
p.say_hi()

那么 Python 类的属性有没有公有或私有呢?

答案是 of cource,通过名称代表是私有还是公有,但是私有不强制无法访问。

类型 写法 是否强制 说明
公有 self.name ❌ 不强制 大家都能访问
“私有” self.__name ❌ 不强制 只是名称改写

但是 __name 会被自动重命名

class Person:
    def __init__(self, name):
        self.__name = name

    def get_name(self):
        return self.__name
p = Person("Alice")

print(p.get_name())   # ✅ 推荐方式
print(p.__name)       # ❌ 会报错
print(p._Person__name)  # ✅ 仍然能访问(只是不方便)

抽象类

python 的抽象类要引入额外包,然后使抽象类继承 ABC

from abc import ABC, abstractmethod

class Animal(ABC):

    @abstractmethod
    def speak(self):
        pass

    @abstractmethod
    def move(self):
        pass

字典

字典就是 Python 中处理键值对的数据结构。

可以直接用来接收 JSON 格式数据,例如:

data = {"messages": ["Hello"]} 

通过 data[‘message’] 可以访问 ‘message’ 键的值

print(data['message'] )

data[‘message’] 等价于 data[‘message’],两种写法都支持。一般要求项目上前后统一,大多数情况打单引号可以少按 shift ;表示 JSON 时常用双引号,data = {“messages”: [“Hello”]} 。

TypedDict

TypedDict 就是有类型限制的 dict 字典。

from typing import TypedDict

class User(TypedDict):
    id: int
    name: str

TypedDict不是字典吗,为什么是用类定义的?

因为 TypedDict 需要类型系统的检查,所以用这么一个类起到检查的作用。实际用再另外用字典,dict u 和类型 User 没有实例化的关系。

实际使用

为什么 LangGraph 的 State 选用 TypedDict,而不是 data class?

因为返回体是 JSON,dict 支持转换,class 转换要再包一层。

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇