如何调用实例列表上的特定方法(使用map)?

2024-09-29 23:24:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下课程:

class Enum(RootFragment):

    def __init__(self, column, packageName, name, modifiers=["public"], enumValues=[]):
        RootFragment.__init__(self, packageName, name, modifiers, "enum")

        self.column = column
        self.enumValues = []

        map(self.addEnumValue, enumValues)

    ... more methods

现在,我创建了许多放入dict中的Enum实例。这是打印在print collidingEnums上的内容:

^{pr2}$

现在因为<Enum instance at 0x0998F080>不是很有用,我想在每个实例上调用getName方法。我试着:

print ", ".join(map(Enum.getName, collidingEnums.items())),

但这给了我一个错误说:

TypeError: unbound method getName() must be called with Enum instance as first argument (got tuple instance instead)

呃?在这里如何调用getName方法?有可能吗?在


Tags: 实例instancenameselfmapinitcolumnenum
3条回答

您正在调用元组上的方法。如果你使用正在碰撞Enums.itervalues,您将拥有枚举对象的生成器。在

如果您为Enum类提供__repr__方法,那么它将打印您想要的任何内容,而不是<Enum instance at 0x0998F080>

不要使用map。请改用生成器表达式:

print ", ".join(i.getName() for i in collidingEnums.values())

或者,您可以简单地为您的Enum类定义自己的__repr__方法,这是Python用来确定如果您只是尝试打印该类时打印出的内容。在

^{pr2}$

相关问题 更多 >

    热门问题