(如果这是重复的,则表示歉意。我只看到了关于函数原型的问题和答案,而没有关于对象/类原型的问题)。
from dataclasses import dataclass
from typing import Set, Dict, Tuple
Point = Tuple[float, float]
PointArray = Set[Point]
PointDataMap = Dict[Point, PointData]
@dataclass
class PointData:
...
@dataclass
class OtherDataClass:
points: PointArray
pointDataMap: PointDataMap = PointDataMap()
...
在运行程序时,出现错误:“未定义PointData。”显然,这是由于在PointDataMap包装器的声明之后将PointData数据类声明放在顶部而导致的。明确的解决方案是将PointDataMap向下移动到PointData下方,这样解释器很高兴,程序可以按照自己的喜好进行操作。
但是,这违反了我的个人风格:我想让它成为极其简单的数据包装器(即Point
,PointArray
等的单层包装器等)全部位于顶部,更复杂的数据对象保留在底部,反之亦然。
这个想法是让单行代码远离功能齐全的数据类。如果我将PointDataMap向下移动,那么我将拥有看起来非常混乱的代码,其中类被单行包装器散布,可读性下降。
有没有办法让该程序在保持当前组织的同时进行编译?从某种意义上讲,从某种意义上讲,有什么办法迫使解释者“有信心”?