Форум сайта python.su
Возьмем код
class Ta:
pass
print str(Ta)
<class __main__.Ta at 0x01CDAF30>
class Tx(Structure):
_fields_ = [("x", c_int),("y", c_int),("z",c_float*5)]
def __init__(self):
pass
typ=Tx
def ClassName(typ):
"""по объекту классу возвращаем его символьное имя"""
res=re.search("\.(.+)'",str(typ))
if res:
return res.group(1)
else:
raise ....
Офлайн
Ta.__name__
Ta.__module__
id(Ta)
hex(id(Ta))
Офлайн
Ок большое спасибо. То что надо.
Правда возник другой вопрос.
У меня python 2.6.6
Выполняю
dir(Ta)
['__doc__', '__module__']
Отредактировано (Ноя. 20, 2010 09:32:14)
Офлайн
Во первых, наследуйтесь от object.
Во вторых - так получилось :)
__bases__ и __name__ обрабатываются хардкодом в classobject.c. Поэтому они не похожи на обычные атрибуты и не попадают в dir.
http://docs.python.org/reference/datamodel.html - полный список того, что бывает у разных питоновских объектов
Офлайн