You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何在classmethod类方法中访问类的类型注解属性bar

报错原因

你代码里的bar : str属于Python的类型注解,仅用于标注变量类型,不会自动为类创建对应的实际属性,因此Foo类本身没有bar属性,访问自然会抛出AttributeError。


场景1:你需要bar是可读写的实际类属性

直接给bar赋值默认值即可:

class Foo:
    bar : str = "" # 显式赋值后类属性真实存在
    @classmethod
    def foobar(cls): # 类方法第一个参数惯例命名为cls,避免和实例方法的self混淆
        print(cls.bar)

# 测试示例
Foo.bar = "测试内容"
Foo.foobar() # 输出:测试内容

场景2:你只是要获取bar的类型注解,不需要存实际属性值

可以通过类自带的__annotations__字典读取注解信息:

class Foo:
    bar : str
    @classmethod
    def foobar(cls):
        print(cls.__annotations__["bar"]) # 输出:<class 'str'>

Foo.foobar()

内容的提问来源于stack exchange,提问作者Stack Overflow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 19:36:00