Python:如何在没有引用的情况下将对象打印为常规字典?

时间:2014-08-27 23:38:10

标签: python

假设我有以下课程:

class Object1:
  d = 1

class Object2:
  a = 1
  b = 2
  c = 3
  o = None

Object2中的o属性将成为Object1的引用。我的最终目标是使用 dict 打印出Object2的平键/对词典:

b = Object2()
b.a = 2

o = Object1()
o.d = 2

b.o = o

print b.__dict__

但我得到了这个:

{'a': 2, 'o': <__main__.Object1 instance at 0x2d52290>}

只是想知道有没有一种方法可以打印出没有参考的dic?

{'a': 2, 'o': {'o': 2}}

由于

2 个答案:

答案 0 :(得分:1)

如何打印课程取决于__str____repr__方法,因此您可以将这些方法添加到Object1。请注意,只有在您确定Object1的值由d属性表示时才应执行此操作:

class Object1:
    d = 1

    def __str__(self):
        return str(self.d)

    def __repr__(self):
        return str(self.d)

输出:

print b.__dict__
{'a': 2, 'o': 2}

答案 1 :(得分:0)

我想你必须遍历字典项目。

for k,v in b.o.items():
    print k,v

或者那些东西。 此外,您可以使用pprint module