¿Cuál es la diferencia entre UserDict
, dict
y ABC
y cuál se recomienda? ¿Los documentos parecen despreciar UserDict
?Subclase dict: ¿UserDict, dict o ABC?
También parece que el update()
de UserDict usaría mi método setitem
mientras que dict
no? ¿Qué métodos son realmente esenciales para anular dada la función personalizada setitem
y getitem
?
Con ABC
s Tendría que implementar absolutamente todos los métodos, ya que no proporciona una implementación predeterminada?
Quiero hacer una dict
que hace dos cosas:
intern()
todas las claves y valores- tienda de algunos de los valores en una base de datos SQLite
, pues, de UserDict
, dict
y ABC
me permitiría hacer esto?
Pero al menos algunos ABC también son útiles para simplificar implementaciones que no están basadas en tipos incorporados, como muestra este fragmento de la misma sección: 'Varios de los ABC también son útiles como mixins que lo hacen más fácil para desarrollar clases que soporten API de contenedor. Por ejemplo, para escribir una clase que soporte la API Set completa, solo es necesario proporcionar los tres métodos abstractos subyacentes: __conta __(), __iter __() y __len __(). El ABC suministra los métodos restantes, como __y __() y isdisjoint() ' – delnan
Si desea probar si algo es un' dict', use 'isistance (x, dict)'. Si desea probarlo, es un tipo de mapeo, use 'isinstance (x, Mapping)'. Para eso está el ABC. Solo son útiles si cada tipo de mapeo usa 'Mapping.register()' o simplemente lo subclasifica directamente. Y sí, este ** es ** el propósito principal de un ABC. –