Estoy usando Python 2.x y me pregunto si hay una manera de saber si una variable es una clase de estilo nuevo. Sé que si se trata de una clase de estilo antiguo, puedo hacer lo siguiente para averiguarlo.¿Identificando que una variable es una clase de estilo nuevo en Python?
import types
class oldclass:
pass
def test():
o = oldclass()
if type(o) is types.InstanceType:
print 'Is old-style'
else:
print 'Is NOT old-style'
Pero no he podido encontrar nada que funcione para las clases de nuevo estilo. Encontré this question, pero las soluciones propuestas no parecen funcionar como se esperaba, porque los valores simples se identifican como clases.
import inspect
def newclass(object):
pass
def test():
n = newclass()
if inspect.isclass(n):
print 'Is class'
else:
print 'Is NOT class'
if inspect.isclass(type(n)):
print 'Is class'
else:
print 'Is NOT class'
if inspect.isclass(type(1)):
print 'Is class'
else:
print 'Is NOT class'
if isinstance(n, object):
print 'Is class'
else:
print 'Is NOT class'
if isinstance(1, object):
print 'Is class'
else:
print 'Is NOT class'
¿Hay alguna forma de hacer algo como esto? ¿O todo en Python es solo una clase y no hay forma de evitarlo?
Por curiosidad, ¿por qué? –
Estaba trabajando en una clase que serializaba a sus hijos recursivamente y quería poder decir si el niño era una clase y manejarlo también serializando sus hijos recursivamente. –
su comentario anterior parece que debería ser la pregunta real, y la pregunta original parece un paso (posiblemente erróneo) que dio hacia la respuesta a su problema. Mira esto: http://catb.org/~esr/faqs/smart-questions.html#goal – tzot