因此,关于什么是Pythonic的另一个问题!在这种情况下,应用程序域是网络算法(如在节点,边缘,Dijkstra,那种事情......),我以前只用强类型语言编码,我们可以非常确定什么是是。Pythonic处理网络数据结构的方法
同时在Python中,我有一个类Net
;这个类的单个实例代表一个网络。我有一个类Edge
,它为网络中的每个边缘实例化。除此之外,每个Edge
实例都具有独特的id
。
有时我希望通过参考相关的Edge
实例来删除边缘。其他时候,我希望使用其id
删除Edge。说实话,我开始失去跟踪哪些变量是Edges
,哪些是ids
。我想我更喜欢C++这个工作:-P
所以我提出两个解决方案:
开始使用系统匈牙利命名法 - 我的名字好变量,所以我知道他们是否是实际Edge对象或只是我想要的边缘的ID。实施强类型 - 使
remove_edge
(这是Net
上的方法)明确拒绝任何不是Edge
的东西。制作一个包装函数remove_edge_id
,它从id
中查找相关的Edge
,然后调用remove_edge
;此功能同样拒绝任何不是id
的东西。使用鸭子打字。请
remove_edge
检查参数是否为id
或Edge
,并仅对它做正确的事情。
Whadday'all估计?
这可能是值得退一步,问你为什么要同时使用对象引用发现自己和ID来跟踪边缘。它是否支持C++习惯?是否有可能修改其他的东西总是使用一个或另一个? –
你指的是一个'图表',而不是'网络'。 –
公平点。我被我的应用程序领域的术语蒙上了一层阴影;-) –