That is more commonly known as destructuring. (in python and javascript at least, as well as a few others iirc)
Pattern matching is normally (in functional languages like Scala and Haskell anyway) defined as a way of taking a union type and handling each one safely. It's a sort of functional alternative to polymorphism.
That is, polymorphic code
class Dog(Animal):
def make_noise(self):
return "bork bork"
class Duck(Animal):
def make_noise(self):
return "quack"
would, with pattern matching be (in pseudo haskell I hope)
make_noise :: Animal -> str
make_noise Duck = "quack"
make_noise Dog = "bork bork"
In other words, in an oop style you delegate to the object that it implements all methods. Whereas with pattern matching you can have a type delegate to each of the functions that can operate on it to handle it correctly. (This explanation is a disservice to functional styles, its a lot more elegant than what I describe if you do it correctly).