本文整理汇总了C++中PyTypeObject::tp_repr方法的典型用法代码示例。如果您正苦于以下问题:C++ PyTypeObject::tp_repr方法的具体用法?C++ PyTypeObject::tp_repr怎么用?C++ PyTypeObject::tp_repr使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PyTypeObject
的用法示例。
在下文中一共展示了PyTypeObject::tp_repr方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
BOOL
Ps_LogObject(PyObject *object, int _type)
{
FILE *file;
PyTypeObject *type;
PyObject *tmp;
if(object == NULL)
return FALSE;
type = object->ob_type;
GET_LOG_LOCK();
switch(_type)
{
case Ps_LOG_ERROR:
file = log_error;
break;
case Ps_LOG_WARING:
file = log_waring;
break;
default:
file = log_normal;
break;
}
assert(file);
if(!type)
{
fprintf(file, "Object at %p is unknowntype\n", object);
return FALSE;
}
fputs("--------------------\n", file);
/*打印object的名字*/
if(type->tp_name)
{
fprintf(file, "Object %s info:\n", type->tp_name);
}
else
{
fprintf(file, "Object at %p info:\n", object);
}
/*打印文档信息*/
if(type->tp_doc)
fprintf(file, "doc: %s\n", type->tp_doc);
/*打印内存分配信息*/
fprintf(file, "base size is %d\n", type->tp_basicsize);
if(type->tp_itemsize)
{
fprintf(file, "Length changable object, Item size is %d\n", type->tp_itemsize);
}
else
fputs("Length unchangable object.\n", file);
/*repr和str的内容*/
if(type->tp_repr)
{
tmp = type->tp_repr(object);
if(tmp && PyString_Check(tmp) && PyString_AsString(tmp))
{
fprintf(file, "repr:%s\n", PyString_AsString(tmp));
}
else
{
fprintf(file, "repr:--Waring-- __repr__ donesn't return a PyStringObject\n");
}
}
if(type->tp_str)
{
tmp = type->tp_str(object);
if(tmp && PyString_Check(tmp) && PyString_AsString(tmp))
{
fprintf(file, "str:%s\n", PyString_AsString(tmp));
}
else
{
fprintf(file, "str:--Waring-- __str__ donesn't return a PyStringObject\n");
}
}
/*HASH值*/
if(type->tp_hash)
{
fprintf(file, "hash value: %ld\n", type->tp_hash(object));
}
/*是否是可调用的*/
if(type->tp_call)
{
fprintf(file, "It's a callable object\n");
}
else
fputs("It's an uncallable object\n", file);
/*是否可迭代*/
if(type->tp_iter && type->tp_iternext)
fputs("It's a iterable object\n", file);
else
fputs("It's an uniterable object\n", file);
fputs("----------------------\n", file);
RELEASE_LOG_LOCK();
return TRUE;
}