我正在研究一个试图代表电子电路的项目。这个问题不涉及电路理论,只涉及对象之间的连接。
问题是我需要以两种不同的方式在两个对象之间建立连接。
我有一个组件和一个节点。组件具有两个端子(正极和负极),每个端子连接到节点。一个节点可以连接许多不同的终端。
所以,我可以
component1.positive = node1
但如果我也想做
node1.add_terminal( component1.positive )
这只会给node1一个自己的引用。
我希望能够让节点包含哪些组件连接到它或引用它的终端的集合,而不必编写
node1.add_terminal( component1, "positive")
或类似的东西。
那么,有没有办法存储“component1.positive”,以便可以追溯到组件和该组件的特定终端?或者有另一种方式来表示这种多对一和一对多的关系吗?
编辑:
Node对象可以告诉它所连接的组件的两个终端中的哪一个是很重要的。
答案 0 :(得分:1)
您可以使用属性。考虑一下(更新):
class Terminal(object)
def __init__(self, component, node = None):
self.component = component
self.node = node
def connect(self, node):
node.add_terminal(self)
self.node = node
def disconnect(self):
self.node.remove_terminal(self)
self.node = None
class Component(object):
def __init__(self):
self._positive = Terminal(self)
@property
def positive(self):
return self._positive
@positive.setter
def positive(self, node):
self._positive.connect(node)
@positive.deleter
def positive(self):
self._positive.disconnect()
用法:
c = Component()
n = Node()
c.positive = n # at this point c.positive.connect(n) thus
# n.add_terminal(c.positive) is called
del c.positive # at this point positive is "disconnected"
# from the node and vise-versa.
# or disconnect explicitly
c.positive.disconnect()
答案 1 :(得分:0)
但是,您不一定需要这些信息。对这些关系进行不同的建模和/或不给对象本身提供知识可能更有意义,但将它们视为图形并在该图形上执行遍历。这使您可以了解每个参考的端点,而无需明确记录它。