【问题标题】:Is it possible to define an specific size to lists in python dataclasses?是否可以为 python 数据类中的列表定义特定大小?
【发布时间】:2023-01-05 16:28:37
【问题描述】:

与 c++ 中的 vec3d p[3] 类似,即定义一个大小为 3 的列表,其内容为 vec3d 类型。

【问题讨论】:

  • 不,我也不确定这与数据类有什么关系。相反,您可以使用元组,它可以被注释为具有特定的大小。尽管请注意,dataclasses.dataclass 不强制执行任何这些
  • 你为什么要尝试这样做而不是使用标准的 python 列表?
  • 我想你可以看看队列。我不认为列表能够做到这一点。 docs.python.org/3/library/queue.html

标签: python python-dataclasses


【解决方案1】:

我认为目前指定列表的预期长度不适用于数据类。 但是,您可以使用 __post_init__ (https://docs.python.org/3/library/dataclasses.html#post-init-processing) 方法编写一些验证代码:

from dataclasses import dataclass

@dataclass
class ExampleDataclass:
     some_variable: list[float]
   
     def __post_init__(self) -> None:
         assert len(self.some_variable) == 3, f"some_variable expects a list with 3 elements!"


if __name__ == "__main__":
    example_dataclass = ExampleDataclass(some_variable=[0, 1, 2])  # works
    # example_dataclass = ExampleDataclass(some_variable=[0, 1])  # fails
    # example_dataclass = ExampleDataclass(some_variable=[0, 1, 2, 3])  # fails as well

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-10
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-23
    相关资源
    最近更新 更多