Python中的枚举:如何在方法参数中强制执行

用户名

我想像下面的代码一样在python中使用枚举(java)。我是Python中的新手。我在Java中使用以下代码,并希望在Python中复制该功能:

class Direction {
  public enum Direction {LEFT, RIGHT, UP, DOWN}

  public void navigate(Direction direction)
    switch(direction){
        case Direction.LEFT:
            System.out.print("left");
            break;
        case Direction.RIGHT:
            System.out.print("right");
            break;
        case Direction.UP:
            System.out.print("up");
            break;
        case Direction.DOWN:
            System.out.print("down");
            break;
  }
}

如何强制用户只为Python方法提供枚举?

阿拉斯泰尔·麦考马克

Python是动态的并且是鸭子类型的-变量可以更改类型,并且您不能在方法上强制使用类型。

但是,您可以使用来检查方法主体中的类型isinstance()

isinstance() 允许用户将您 enum 子类划分 为将来的扩展性。 -查看评论

例如

# Python 2.x: pip install enum34
from enum import Enum

class Direction(Enum):
    LEFT = "left"
    RIGHT = "right"
    UP = "up"
    DOWN = "down"

def move(direction):

    # Type checking
    if not isinstance(direction, Direction):
        raise TypeError('direction must be an instance of Direction Enum')

    print direction.value

>>> move(Direction.LEFT)
left
>>> move("right")
TypeError: direction must be an instance of Direction Enum

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Jenkins DSL中强制执行参数排序?

来自分类Dev

如何在python中从python中强制执行或呈现浏览器中的脚本?

来自分类Dev

我们如何在PHP中强制执行参数类型?

来自分类Dev

如何在函数参数中强制执行类型并避免隐式转换?

来自分类Dev

如何在.Net中强制执行OutOfMemoryException

来自分类Dev

如何在Perl中强制执行long double

来自分类Dev

如何在Chrome中强制执行504错误

来自分类Dev

如何在vb.net中调试强制执行?

来自分类Dev

如何在Perl中强制执行long double

来自分类Dev

如何在Java中强制执行构造函数

来自分类Dev

如何在GNOME Web中强制执行大文本?

来自分类Dev

如何在matplotlib中的网格内强制执行图?

来自分类Dev

如何在 Antlr 中强制执行某些规则

来自分类Dev

如何在 Java <= 8 中强制执行模块边界

来自分类Dev

在Haxe中,当未在“抽象”超类中定义子类时,如何在子类中强制执行方法声明?

来自分类Dev

如何在Spark SQL中强制执行内存中的分块排序?

来自分类Dev

如何在git中强制执行“文件名中没有空格”策略?

来自分类Dev

如何在Spark SQL中强制执行内存中的分块排序?

来自分类Dev

如何在python列表上强制执行特定类型

来自分类Dev

如何在phpstorm中对数组声明强制执行长语法?

来自分类Dev

GHC如何在多线程应用程序中强制执行评估?

来自分类Dev

如何在Play 2.x中强制执行JSON的严格序列化

来自分类Dev

如何在Sublime中强制执行50个字符的提交摘要行?

来自分类Dev

如何在RedShift中强制执行参照完整性?

来自分类Dev

如何在SQL(Postgres)中强制执行过滤器评估顺序?

来自分类Dev

如何在Java中的for循环中的每个update()之后强制执行repaint()?

来自分类Dev

如何在go框架中为不同的测试强制执行测试顺序?

来自分类Dev

如何在视图上强制执行约束,以确保在MSSQL中返回0行

来自分类Dev

如何在for循环中强制执行多个QComboBox中的任何一个的最小索引?

Related 相关文章

  1. 1

    如何在Jenkins DSL中强制执行参数排序?

  2. 2

    如何在python中从python中强制执行或呈现浏览器中的脚本?

  3. 3

    我们如何在PHP中强制执行参数类型?

  4. 4

    如何在函数参数中强制执行类型并避免隐式转换?

  5. 5

    如何在.Net中强制执行OutOfMemoryException

  6. 6

    如何在Perl中强制执行long double

  7. 7

    如何在Chrome中强制执行504错误

  8. 8

    如何在vb.net中调试强制执行?

  9. 9

    如何在Perl中强制执行long double

  10. 10

    如何在Java中强制执行构造函数

  11. 11

    如何在GNOME Web中强制执行大文本?

  12. 12

    如何在matplotlib中的网格内强制执行图?

  13. 13

    如何在 Antlr 中强制执行某些规则

  14. 14

    如何在 Java <= 8 中强制执行模块边界

  15. 15

    在Haxe中,当未在“抽象”超类中定义子类时,如何在子类中强制执行方法声明?

  16. 16

    如何在Spark SQL中强制执行内存中的分块排序?

  17. 17

    如何在git中强制执行“文件名中没有空格”策略?

  18. 18

    如何在Spark SQL中强制执行内存中的分块排序?

  19. 19

    如何在python列表上强制执行特定类型

  20. 20

    如何在phpstorm中对数组声明强制执行长语法?

  21. 21

    GHC如何在多线程应用程序中强制执行评估?

  22. 22

    如何在Play 2.x中强制执行JSON的严格序列化

  23. 23

    如何在Sublime中强制执行50个字符的提交摘要行?

  24. 24

    如何在RedShift中强制执行参照完整性?

  25. 25

    如何在SQL(Postgres)中强制执行过滤器评估顺序?

  26. 26

    如何在Java中的for循环中的每个update()之后强制执行repaint()?

  27. 27

    如何在go框架中为不同的测试强制执行测试顺序?

  28. 28

    如何在视图上强制执行约束,以确保在MSSQL中返回0行

  29. 29

    如何在for循环中强制执行多个QComboBox中的任何一个的最小索引?

热门标签

归档