Skip to main content

An Enum-based implementation of switch for Python.

Project description

Enum-based Switch for Python

This is an attempt at creating a way to do a reliable, not-bug-prone implementation, for Python, of a switch thing like other languages have.

How it works

Suppose you have an enum, like this:

class Color(Enum):
    RED = 1
    GREEN = 2
    BLUE = 3

And you want to implement logic which branches based on a value which is of type Color. You can do it by subclassing the Switch class. The syntax should be obvious, but:

  • Inherit from Switch
  • Implement a method for each value of the Enum
  • If you are not implementing them all: add a default method.
  • If you leave any Enum value unaccounted for: it will raise an exception when you instantiate your class.

Then:

  • Instantiate your class
  • Call it as a function passing it a value from the Enum
  • The respective method will be executed and its return value returned
from enum_switch import Switch

class MySwitch(Switch):
    def RED(self):
        return "Apple"

    def GREEN(self):
        return "Kiwi"

    def BLUE(self):
        return "Sky"

switch = MySwitch()

print(switch(Color.RED))

Apple

And that's it.

Some additional notes:

  • Passing it something that is not a value of the correct Enum type will raise ValueError
  • default is optional

Hope someone finds it useful!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

enum_switch-0.1.0.tar.gz (2.2 kB view hashes)

Uploaded source

Built Distribution

enum_switch-0.1.0-py3-none-any.whl (2.1 kB view hashes)

Uploaded py3

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page