在python中打印类对象

时间:2015-11-14 12:41:37

标签: python openstack

我正在修改Openstack Designate中的代码。

在同一时间我需要打印一些数据。

当我检查相同的类型时,它返回了如下详细信息:

<class 'designate.openstack.common.rpc.amqp.RpcContext'>

当我尝试记录相同的内容(用于打印)时,它返回的详细信息如下:

<designate.openstack.common.rpc.amqp.RpcContext object at 0x7f7552b08250>

我知道它包含tenant_id,所以当我尝试打印时,它工作正常。

LOG.info(context.tenant_id)

现在我需要知道或看看里面是什么:

<designate.openstack.common.rpc.amqp.RpcContext object at 0x7f7552b08250>

那是在'上下文'中。

我需要的只是打印位于“上下文”内的详细信息

3 个答案:

答案 0 :(得分:1)

阅读abount __repr____str__

__repr__是&#34;官员&#34;对象的字符串表示

__str__是&#34;非正式的&#34;对象的字符串表示

您可以覆盖类中的两个函数。

有关详细信息,请参阅Difference between __str__ and __repr__ in Python

在你的情况下你可以写:

def __str__(self):
    return '%d' % self.tenant_id

答案 1 :(得分:1)

任何与oslo-incubator相关的东西都应该在openstack / oslo-incubator中更改,然后同步指定项目

然而,大多数代码都是从oslo-incubator毕业的,oslo-incubator中的rpc模块似乎不再存在,所以看来你是在开发基于(旧的)稳定分支

所以我想你只需要知道它里面有什么。

正如您已经为tenant_id所做的那样,只需添加一个要打印的日志:

org.hibernate.HibernateException: Could not obtain transaction-synchronized Session for current thread

会没事的

答案 2 :(得分:0)

也许你可以使用这个小技巧:

<TextView
        android:layout_width="match_parent"
        android:layout_height="180dp"
        android:lineSpacingExtra="10dp"/>

def info_obj(a): for x in dir(a): if not x.startswith('_'): print(x, ,'=', a.__getattribute__(x)) 将返回对象的所有属性的名称,dir(a)将获得其值。我正在跳过以__getattribute__开头的那些,因为对象的用户通常不会看到这些内容。