Class variables vs configuration dicts

Consider these two approaches:

Configuration dictionary within class

DEFAULT_PARAMETERS = {     "name": "Generic Room",     "description": "This is a sample description." }  class Room:     """Base class for a room"""      def __init__(self, parameters=DEFAULT_PARAMETERS):         for key, value in parameters.items():             setattr(self, key, value)         for key, value in DEFAULT_PARAMETERS.items():             if getattr(self, key, None) is None:                 setattr(self, key, value) 

Proper class structure

class Room:     """Base class for a room"""      name = "Generic Room"     description = "This is a sample description."      def __init__(self, parameters):         for key, value in parameters.items():             setattr(self, key, value) 

I’m not very well-versed in Python, and the languages I come from (PHP, C++) along with my existing experience lead me to believe that the second approach is how things are meant to be done in general.

The core issue lies in the discussion I had with my friend about how to organize different room generation for our game project – I firmly adhere to the second approach, with each type of Room (Kitchen, Hallway, Living Room, Bedroom) being its separate class inherited from room, while he insists that it’s entirely unnecessary because of how “small” each room class looks (there’s not a lot of functionality right now) and how it’s “unnecessary to create so many class files for very similar entities”.

I’ve argumented my point with concepts like encapsulation, separation of concerns and single responsibility principle, but he’s very averse to creating more classes, preferring to use those parameter dicts which would be stored in a configuration module. I’m unaware whether this is a valid approach in Python, but that’s not how I’d ever design architecture. Is there something I’m missing?