Python对象原型/转发声明?

时间:2019-03-20 18:20:52

标签: python python-3.x prototype typing

(如果这是重复的,则表示歉意。我只看到了关于函数原型的问题和答案,而没有关于对象/类原型的问题)。

代码

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下方,这样解释器很高兴,程序可以按照自己的喜好进行操作。

但是,这违反了我的个人风格:我想让它成为极其简单的数据包装器(即PointPointArray等的单层包装器等)全部位于顶部,更复杂的数据对象保留在底部,反之亦然。

这个想法是让单行代码远离功能齐全的数据类。如果我将PointDataMap向下移动,那么我将拥有看起来非常混乱的代码,其中类被单行包装器散布,可读性下降。

有没有办法让该程序在保持当前组织的同时进行编译?从某种意义上讲,从某种意义上讲,有什么办法迫使解释者“有信心”?

0 个答案:

没有答案