nameTuple和类参数

时间:2017-02-26 03:55:46

标签: python class namedtuple

我的讲师写了一些代码而且我不知道如何阅读它并且谷歌没有帮助,有人可以澄清这段代码如何互动。

yield Arc(tail_node, head = tail_node - 1, label="1down", cost=1)

方法是否为类

调用
class Arc(namedtuple('Arc', 'tail, head, label, cost')):

Arc类不包含任何方法,也没有__init。我不知道这两个是如何交互的,因为我认为类参数接受了另一个类,并且它使当前类成为子类或抽象等。

1 个答案:

答案 0 :(得分:0)

collections.namedtuple函数是一个类工厂。它需要一些参数并返回一个类。该类继承自tuple,但其值也可以通过名称作为属性访问(不仅仅是索引)。

您展示的Arc类使用namedtuple来创建其基类。您可以使用单独的语句等效地编写它,为基类提供它自己的名称:

Base = namedtuple('Arc', 'tail, head, label, cost')   # this creates a class
class Arc(Base):    # this class inherits from the base class
    pass

如果Arc类没有自己的任何方法,那么定义它就没有多大意义(你只需使用名称{{对于从Arc返回的类,1}}而不是Base。我猜测namedtuple课程中还有更多代码,与您的问题无关。从基类继承的行为足以使用位置或关键字参数创建实例,因此您显示的Arc语句不需要任何其他代码。