gpt4 book ai didi

java - 如何在 Python 中实现类似 Java 的枚举?

转载 作者:太空宇宙 更新时间:2023-11-04 06:44:50 24 4
gpt4 key购买 nike

说这句话的 python 版本是什么..这是在 java 中

public static enum Operations {Add, Subtract, Multiply, Divide, None};

我正在将整个程序转换为 python,我就是想不通这部分

这是我的全类同学

    import java.util.*;

public class Expression
{
public static enum Operations {Add, Subtract, Multiply, Divide, None};
int a;
int b;
Expression.Operations op;
public Expression()
{
a = 0;
b = 0;
op = Expression.Operations.None;
}
public Expression(int value1, int value2, Expression.Operations operation)
{
a = value1;
b = value2;
op = operation;
}

public boolean parseString(String expressionString, Map<Character, Integer> vars)
{
Scanner scanner = new Scanner(expressionString);

//Attempt to read the first value.
if (scanner.hasNextInt())
a = scanner.nextInt();
else if (scanner.hasNext())
{
String var = scanner.next();
//Ensure that the variable identifier is a single alphabetical character in length.
if (!var.matches("[A-Z]{1}"))
{
return false;
}
if (vars.containsKey(var.charAt(0)))
a = vars.get(var.charAt(0));
else
{
System.err.println("ERROR: Uninitialized variable.");
return false;
}
}
else return false;

//If more tokens exist, attempt to read the operator.
if (scanner.hasNext())
{
String operator = scanner.next();
if (operator.equals("+"))
op = Expression.Operations.Add;
else if (operator.equals("-"))
op = Expression.Operations.Subtract;
else if (operator.equals("*"))
op = Expression.Operations.Multiply;
else if (operator.equals("/"))
op = Expression.Operations.Divide;
else
return false;

//Attempt to read the second value.
if (scanner.hasNextInt())
b = scanner.nextInt();
else if (scanner.hasNext())
{
String var = scanner.next();
//Ensure that the variable identifier is a single alphabetical character in length.
if (!var.matches("[A-Z]{1}"))
{
return false;
}
b = vars.get(var.charAt(0));
}
else return false;
}

return true;
}
public int evaluate()
{
int value = 0;
if (op == Expression.Operations.Add)
value = a + b;
if (op == Expression.Operations.Subtract)
value = a - b;
if (op == Expression.Operations.Multiply)
value = a * b;
if (op == Expression.Operations.Divide)
value = a / b;
if (op == Expression.Operations.None)
value = a;
return value;
}
}

最佳答案

Python 没有枚举类。它只是使用普通整数来完成。使模板成为类的一部分的最简单方法是执行以下操作:

class Operation:
ADD, SUBTRACT, MULTIPLY, DIVIDE, NONE = range(5)

这会将 add 分配给 0,将 none 分配给 4。这是最干净的方法(并且它将保证您在此序列中没有任何相同数字的枚举,并且您没有错过了为其中一个号码分配内容。

关于java - 如何在 Python 中实现类似 Java 的枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6824983/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com