Python - que devuelve __class__?

 
Vista:

que devuelve __class__?

Publicado por jodi (1 intervención) el 27/05/2008 17:21:49
Una duda que tengo:

Que es realmente __class__? como se define exactamente?

quiero decir, para objetos me dice de que clase es.... pero aplicado a clases? lo que quiero es, dinamicamente en un metodo, saber si se le ha pasado un objeto o una clase y miro la propiedad __class__ que se supone no deberia aparecer en las clases PERO aparece en las clases que heredan deo 'object' y encima devuelve 'type'

un ejemplo que queda todo mucho mas claro:

class heredaobj(object):
def __init__(self):
self.atr = "hereda objeto"
def escupe(self):
print "escupe

class nohereda():
def __init__(self):
self.noatr = "no hereda"
def noescupe(self):
print "noescupe"

>>> h = heredaobj()
>>> nh = nohereda()
>>> h
<library.heredaobj object at 0x00A84E30>
>>> nh
<library.nohereda instance at 0x00A8A2B0>
>>> h.__class__
<class 'library.heredaobj'>
>>> nh.__class__
<class library.nohereda at 0x00A7ACF0>
>>> heredaobj.__class__ =====> Esto es lo que yo creia que debia dar error
<type 'type'>
>>> nohereda.__class__
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: class nohereda has no attribute '__class__'
>>>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder