Solución:
Podrías usar el __dict__
propiedad que compone una clase, por ejemplo:
In [1]: class Foo(object):
...: bar = "b"
...: zulu = "z"
...:
In [2]: "bar" in Foo.__dict__
Out[2]: True
O mientras busca los valores, use __dict__.values()
:
In [3]: "b" in Foo.__dict__.values()
Out[3]: True
Como señala Peter Wood, el vars()
incorporado también se puede utilizar para recuperar el __dict__
:
In [12]: "b" in vars(Foo).values()
Out[12]: True
los __dict__
La propiedad se usa como un espacio de nombres para las clases y, por lo tanto, también devolverá todos los métodos, métodos mágicos y propiedades privadas de la clase, por lo que, para mayor solidez, es posible que desee modificar ligeramente su búsqueda para compensar.
En su caso, es posible que desee utilizar un classmethod
, tal como:
class States(object):
ALABAMA = "AL"
FLORIDA = "FL"
@classmethod
def is_state(cls, to_find):
print(vars(cls))
states = [val for key, val in vars(cls).items()
if not key.startswith("__")
and isinstance(val, str)]
return to_find in states
States.is_state("AL") # True
States.is_state("FL") # True
States.is_state("is_state") # False
States.is_state("__module__") # False
Actualizar
Esto responde claramente a la pregunta de los OP, pero los lectores también pueden estar interesados en la Enum
biblioteca en Python 3, que posiblemente sería un mejor contenedor para datos como este.
¿Por qué no usas un diccionario? Es mucho más simple y las búsquedas también serán más fáciles.
states = 'AL': 'Alabama', 'AK': 'Alaska' ...
test_state="Foo"
if test_state not in states.keys():
print(' is not valid input'.format(test_state))
Sugeriría usar Enum para definir ambos Gender
y States
.
Enum si forma parte de la biblioteca estándar en Python 3
. Si estas en Python 2
use enum34, instale con pip install enum34
.
from enum import Enum
class States(Enum):
ALABAMA = 'AL'
ALASKA = 'AK'
ARIZONA = 'AZ'
ARKANSAS = 'AR'
CALIFORNIA = 'CA'
COLORADO = 'CO'
CONNECTICUT = 'CT'
DELAWARE = 'DE'
DISTRICTOFCOLUMBIA = 'DC'
...
Luego puede verificar si una variable es uno de los estados mediante
isinstance(variable, States)