Python 3.7 dataclass: ошибка при назначении значения неопределенному атрибуту - PullRequest
1 голос
/ 27 июня 2019

Я хочу ограничить использование класса данных для пользователей моего кода, и мне интересно, как я могу вызвать ошибку в следующем контексте:

from dataclasses import dataclass

@dataclass
class Foo:
    attr1: str

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

В настоящее время последняя строка завершается успешно и не изменяетсябазовый объект.Я хочу, чтобы последняя строка выдавала ошибку.

1 Ответ

2 голосов
/ 27 июня 2019

Вы можете добавить атрибут __slots__ к классу данных, как и любой другой класс.Попытка создать новые атрибуты экземпляра завершится неудачно с AttributeError:

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

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