我看到了页面:枚举函数?
我很熟悉this SO question在Python中创建枚举。但是,我无法在具有函数的枚举的任何地方找到示例。
我主要是一个Java程序员。 我写了这个代码在Java中:
public enum Role {
SOLDIER(4),
DEMOMAN(2),
SCOUT(4),
MEDIC(2);
private final int maxPlayers;
private Role(int maxPlayers) {
this.maxPlayers = maxPlayers;
}
public int getMaxPlayers() { return maxPlayers; }
}
我试图做同样在Python:
class Klass:
SCOUT = 1
SOLDIER = 2
DEMOMAN = 3
MEDIC = 4
@staticmethod
def maxPlayers(klass):
return {
Klass.SCOUT : 4,
Klass.SOLDIER : 4,
Klass.DEMOMAN : 2,
Klass.MEDIC : 2,
}[klass]
出于某种原因。我觉得我做错了。 将函数关联到Python的枚举的最佳实践是什么?
我实际上并不关心建议的答案是否不使用枚举;我只是想了解在Python中实现上述Java代码的最佳实践。
我愿意在以下使用此枚举:
class Players(dict):
def countKlass(self, klass):
count = len(filter(lambda x: x == klass, self.values()))
return count
Java代码不是纯枚举;它是枚举的一个子类。如果您只是将Klass更改为Enum的子类(链接中提到的PEP 435枚举),它应该按照您的预期正常工作。它们是整数,所以查词典看起来很简单。 –
这可能有所帮助:http://stackoverflow.com/questions/36932/how-can-i-represent-an-enum-in-python – Hoopdady
我的Python代码的作品。但我想这不是最好的做法。 – Nirock