python-3.x - 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
当前最后一行成功并且不更改底层对象。我希望最后一行抛出错误。
解决方案
您可以__slots__
像任何其他类一样向数据类添加属性。尝试创建实例的新属性将失败,并显示AttributeError
:
@dataclass
class Foo:
__slots__ = ("attr1",)
attr1: str
foo = Foo("1")
foo.attr2 = "3"
# AttributeError: 'Foo' object has no attribute 'attr2'
推荐阅读
- angular - 迁移到 Angular 10 最新版本时出现错误
- php - 尝试使用 Docker 在 NGINX 容器上显示 php 网站时出现 403 禁止错误
- laravel - Laravel 5.8 单元测试邮件:未发送可邮寄
- azure-devops - 跨多个项目查询 lastChanged 工作项
- python - 在 Django 模型中添加多个图像
- python - Pandas Groupby 年月成列
- automapper - AutoMapper 10.0.0 with F# - 如何在没有额外映射的情况下修复它?
- indy - Indy 10 电子邮件附件出现在正文中
- android - 颤振构建apk导致错误:找不到用于签名配置“发布”的密钥库文件
- javascript - Vue - 在这种情况下如何传递数组?