A clase es una estructura de datos de Python que se puede usar como plantilla para instancias de esa clase llamándola, p. Ej. foo = Foo()
.
A tipo es una clase que se puede utilizar como plantilla para clases adicionales a modo de herencia, p. class Foo(Bar):
Dado que Python admite la herencia, todas las clases se pueden usar como plantillas para clases adicionales, lo que significa que todas las clases son de hecho tipos.
Esto es especialmente cierto desde la aparición de las "clases de estilo nuevo" derivadas de object
, que unifican la jerarquía de tipos de clases definidas por el usuario con los tipos incorporados. Las clases siempre eran tipos, pero ahora son el mismo tipo de tipos que los tipos incorporados.
Aunque las clases de Python son tipos, todavía encuentro que la distinción es útil, así que los términos no son del todo sinónimos en mi mente.
Definición de bonificación: a metaclass es una clase cuyas instancias son clases.En Python, estos deben derivarse de la clase type
, del mismo modo que los objetos de estilo nuevo se derivan de object.
Y usted mismo, ¿cuándo usa uno u otro? – sebpiq