¿Cuál es la diferencia entre type(obj)
y obj.__class__
? ¿Existe alguna posibilidad de type(obj) is not obj.__class__
?Diferencia entre tipo (obj) y obj .__ class__
Quiero escribir una función que funcione genéricamente en los objetos suministrados, utilizando un valor predeterminado de 1 en el mismo tipo que otro parámetro. ¿Qué variación, n. ° 1 o n. ° 2 a continuación, va a hacer lo correcto.
def f(a, b=None):
if b is None:
b = type(a)(1) # #1
b = a.__class__(1) # #2
La ironía más grande es que el comentario de yairchu ahora tiene el mismo problema ya que cambiaron el formato ...: P –
No estaría de más mostrar * cómo * se comportan de manera diferente, y tal vez también * por qué *. Solo decir * cuando * se comportan de manera diferente suena una respuesta floja, incluso si es correcta. – MestreLion
vale mencionar que este es solo el problema en Python 2. En Python 3, las tres expresiones serán True. – Bob