In Python, meta classes are classes that define the behavior of other classes. In other words, a meta class is a class that creates classes. Meta classes allow you to control the behavior of class creation, and to customize how classes are defined. 

In Python, every class is an instance of a metaclass. By default, this metaclass is type. When you define a class in Python, the type metaclass is used to create the class object. However, you can create your own metaclasses by subclassing type.

Metaclasses can be used to add new functionality to classes or to modify the behavior of existing classes. For example, you can use a metaclass to automatically add certain attributes or methods to all instances of a class, or to ensure that all subclasses of a particular class conform to a certain interface.

Metaclasses are a powerful tool in Python, but they should be used with care. They can make your code more complex and harder to understand, so they should only be used when they provide a clear benefit.