私は以下のクラスを持っている:(マップを使用して)インスタンスのリストで特定のメソッドをどのように呼び出すのですか?
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
今、私は辞書に入れている列挙型インスタンスの数を作成します。これはに印刷する内容である:
今{'ManagerRole': <Enum instance at 0x0998F080>, 'StaffMemberRole': <Enum instance at 0x0998B490>}
<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
メソッドとはどのように呼びますか?そんなことは可能でしょうか?あなたEnum
クラスの__repr__
方法を指定した場合
を使用すると、getattrが使用されます。例えば、 –
は、 'getattr(object、" __name __ ")'を使用することを意味します。 –
この特定の場合の問題は 'dict.items()'を呼び出して、 '(key、value)'タプル。 'dict.values()'を呼び出すと、この例はうまくいきます。ただし、すべてが同じタイプではない値に対しても機能するようにするには、アンバーの提案でリスト内包を使用します。 –