Created at: 2025-04-09
Source: https://github.com/kraken-tech/psycopack/pull/4#discussion_r2030547248
Perhaps that discussion cares further scrutinity?
After evaluating the PEP and the official Python docs, it's clearer to me that what this code above does is already structural pattern matching. E.g., I am not comparing the exact value (like C switch statements), I am comparing an object type, shape, and value.
To further strengthen that position, there's this example from "matching
objects" in the canonical pep tutorial for switch
statements.
Reference
Also, there is a clear example in the tutorial that is an accurate match our situation:
Patterns may use named constants. These must be dotted names to prevent them from being interpreted as capture variable:
from enum import Enum
class Color(Enum):
RED = 0
GREEN = 1
BLUE = 2
match color:
case Color.RED:
print("I see red!")
case Color.GREEN:
print("Grass is green")
case Color.BLUE:
print("I'm feeling the blues :(")
I wouldn't say that you'd be wrong by transferring a C-style thinking into
Python match
statements, given that the former is just a "simpler" use case
of Python object matching. That is, given that in Python
everything-is-an-object*
*
: not everything, keywords are not objects - but this is a common falacy!