2024-10-01 07:39:04 发布
网友
我想打印python类的表示(repr),如下所示:
varA = 0.5 variableB = 0.242 var_cadateta = 'test'
等号对齐的地方。我不希望每次更改变量名时都计数,所以我希望在函数中自动执行此操作。例如,有没有一种方法可以用字典轻松做到这一点,还是需要手工制作
我可以使用
var_max = max(len(k) for k in variables_dict.keys())
也许从那里开始,但我希望能有一种更像Python的方式
您可以为任何字典创建通用prettyRepr函数,并在类的repr方法或任何其他地方使用它:
def prettyRepr(d): return "\n".join(f"{k:{w}} = {v}" for w in [max(map(len,d))] for k,v in d.items())
示例使用:
varA = 0.5 variableB = 0.242 var_cadateta = 'test' print("globals:") print(prettyRepr(globals())) def myFunction(): varD = 1.5 variableE = 3.14 varamatras = 'hello' print(prettyRepr(locals())) print("\nLocals:") myFunction() class MyClass: def __init__(self): self.prop1 = 32 self.property = "world" def __repr__(self): return prettyRepr(self.__dict__) c = MyClass() print("\nClass repr:") print(c)
输出:
globals: __name__ = __main__ __doc__ = None __package__ = None __loader__ = <class '_frozen_importlib.BuiltinImporter'> __spec__ = None __annotations__ = {} __builtins__ = <module 'builtins' (built-in)> __file__ = /Users/****/Documents/Python Scripts/playground.py prettyRepr = <function prettyRepr at 0x10e0c4378> varA = 0.5 variableB = 0.242 var_cadateta = test Locals: varD = 1.5 variableE = 3.14 varamatras = hello Class repr: prop1 = 32 property = world
您可以为任何字典创建通用prettyRepr函数,并在类的repr方法或任何其他地方使用它:
示例使用:
输出:
相关问题 更多 >
编程相关推荐