Te damos el hallazgo a este disgusto, o por lo menos eso esperamos. Si presentas interrogantes coméntalo, que con gusto te ayudaremos
Solución:
Si no tener un valor tiene un significado en su programa (por ejemplo, un valor opcional), debe usar Ninguno. Ese es su propósito de todos modos.
Si el valor debe ser proporcionado por la persona que llama a __init__, recomendaría no inicializarlo.
Si “” tiene sentido como valor predeterminado, utilícelo.
En Python, el tipo se deduce del uso. Por lo tanto, puede cambiar el tipo simplemente asignando un valor de otro tipo.
>>> x = None
>>> print type(x)
>>> x = "text"
>>> print type(x)
>>> x = 42
>>> print type(x)
Ninguno se usa para indicar “no establecido”, mientras que cualquier otro valor se usa para indicar un valor “predeterminado”.
Por lo tanto, si su clase hace frente a cadenas vacías y le gusta como valor predeterminado, use “”. Si su clase necesita verificar si la variable se configuró, use Ninguno.
Tenga en cuenta que no importa si su variable es un string inicialmente. Puede cambiarlo a cualquier otro tipo/valor en cualquier otro momento.
Otra forma de inicializar un vacío string es usando el incorporado str()
función sin argumentos.
str(objeto=”)
devolver un string que contiene una representación muy bien imprimible de un objeto.
…
Si no se da ningún argumento, devuelve el vacío string”.
En el ejemplo original, se vería así:
def __init__(self, mystr=str())
self.mystr = mystr
Personalmente, creo que esto transmite mejor tus intenciones.
Fíjate por cierto que str()
establece un valor de parámetro predeterminado de ''
.
Más adelante puedes encontrar las reseñas de otros sys admins, tú todavía tienes la opción de insertar el tuyo si dominas el tema.