首页 > 解决方案 > Python 3.7 数据类:为未定义的属性赋值时引发错误

问题描述

我想将数据类的使用限制为我的代码的用户,并且想知道如何在以下上下文中引发错误:

from dataclasses import dataclass

@dataclass
class Foo:
    attr1: str

foo = Foo("1")
foo.attr2 = "3" #I want this line to raise an exception

当前最后一行成功并且不更改底层对象。我希望最后一行抛出错误。

标签: python-3.xerror-handlingpython-dataclasses

解决方案


您可以__slots__像任何其他类一样向数据类添加属性。尝试创建实例的新属性将失败,并显示AttributeError

@dataclass
class Foo:
    __slots__ = ("attr1",)
    attr1: str

foo = Foo("1")
foo.attr2 = "3"
# AttributeError: 'Foo' object has no attribute 'attr2'

推荐阅读