gpt4 book ai didi

Python pretty-print 嵌套对象

转载 作者:行者123 更新时间:2023-11-28 22:17:00 34 4
gpt4 key购买 nike

我有 3 个 Python 类 A、B 和 C。A 包含 B 对象,B 包含 C 的对象。我想要的是当我打印 A 类对象时,它应该以下面的格式漂亮地打印。 C类内部也可以有更多的嵌套。

A:
loc : XYZ
qual : ABC
b :
name : ABC
age : 30
c :
address : ABC
phn : 99009

以下是供引用的类。

class C(object):
def __init__(self):
self.address='ABC'
self.phn=99009

class B(object):
def __init__(self):
self.name='ABC'
self.age=30
self.c = C()

class A(object):
def __init__(self):
self.loc = 'XYZ'
self.qual = 'ABC'
self.b = B()

最佳答案

下面的工作是让您的类继承自实现 __str__ 的公共(public)基类。方法:

class PrettyPrinter(object):
def __str__(self):
lines = [self.__class__.__name__ + ':']
for key, val in vars(self).items():
lines += '{}: {}'.format(key, val).split('\n')
return '\n '.join(lines)

class C(PrettyPrinter):
def __init__(self):
self.address='ABC'
self.phn=99009

class B(PrettyPrinter):
def __init__(self):
self.name='ABC'
self.age=30
self.c = C()

class A(PrettyPrinter):
def __init__(self):
self.loc = 'XYZ'
self.qual = 'ABC'
self.b = B()

a = A()
print(a)

在 Python 3.6 和更新版本中,这显示为

A:
loc: XYZ
qual: ABC
b: B:
name: ABC
age: 30
c: C:
address: ABC
phn: 99009

请注意,所有属性都是自动打印的。它们的打印顺序由 vars 函数决定,该函数实际上在 __dict__ 字典中查找。该字典在 Python 3.5 及以下版本中具有不确定的顺序,因此打印输出不如 3.6 及更高版本。

关于Python pretty-print 嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51753937/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com