【发布时间】:2009-05-26 15:43:52
【问题描述】:
我有一个关于内置类型的子类型及其构造函数的问题。我希望一个类既继承自元组又继承自自定义类。
让我给你一个具体的例子。我经常使用图表,即与边相连的节点。我开始在自己的图形框架上做一些工作。
有一个类Edge,它有自己的属性和方法。它还应该从类 GraphElement 继承。 (GraphElement 是在特定图的上下文之外没有任何意义的每个对象。)但在最基本的层面上,边只是包含两个节点的元组。如果您可以执行以下操作,那将是很好的语法糖:
edge = graph.create_edge("Spam","Eggs")
(u, v) = edge
所以 (u,v) 将包含“Spam”和“Eggs”。它还支持像
这样的迭代for node in edge: ...
我希望你明白我为什么要子类型元组(或其他基本类型,如 set)。
这是我的 Edge 类及其 init:
class Edge(GraphElement, tuple):
def __init__(self, graph, (source, target)):
GraphElement.__init__(self, graph)
tuple.__init__((source, target))
当我打电话时
Edge(aGraph, (source, target))
我得到一个 TypeError: tuple() 最多接受 1 个参数(给定 2 个)。我做错了什么?
【问题讨论】: