Mejor respuesta
Puede obtener el nombre accediendo a \_\_name\_\_
atributo de la clase; y si tiene un objeto, puede obtener la clase accediendo al atributo \_\_class\_\_
del objeto.
>>> class SillyClassName:
... @classmethod
... def my\_name(cls\_):
... return cls\_.\_\_name\_\_
...
... def class\_name(self):
... return self.\_\_class\_\_.\_\_name\_\_
...
>>> SillyClassName.my\_name()
SillyClassName
>>>
>>> inst = SillyClassName()
>>> inst.class\_name()
SillyClassName
Tenga cuidado: si usa esto para acceder al nombre de la clase en una situación en la que está usando herencia, entonces el uso de self.\_\_class\_\_.\_\_name\_\_\_
devolverá el nombre de la clase original, no el clase que contiene el código.
>>> class SecondSillyClass(SillyClassName):
... pass
...
>>> inst = SecondSillyClass()
>>> SecondSillyClass.my\_name()
SecondSillyClass
>>> inst.class\_name()
SecondSillyClass
Responde
de tres formas :
- Use el operador in:
"orld" in "Hello World"
por ejemplo - Use el
find()
método:"Hello World".find("or")
: devuelve el índice de la subcadena en la cadena principal; devuelve-1
cuando no está en la cadena principal. - Use el
count()
método"Hello World".count("or")
: esto devuelve la frecuencia con la que la cadena secundaria está contenido en la cadena principal: devuelve 0 si la subcadena no está en la cadena principal.
Usando find () o count () solo para probar si una subcadena está contenida en una cadena principal no es una buena práctica, pero se puede hacer si planea usar la información que proporcionan por otras razones.
Por ejemplo, hacer esto:
if substring in mainstring:
index = mainstring.find(substring)
after = maintstring[index+len(substring):]
Es realmente pobre práctica – sería mejor hacer esto:
index = mainstring.find(substring)
if index != -1:
after = maintstring[index+len(substring):]