gpt4 book ai didi

Python __repr__ 用于所有成员变量

转载 作者:太空狗 更新时间:2023-10-30 01:47:48 24 4
gpt4 key购买 nike

用成员变量xy为类Foo实现__repr__,有没有办法自动填充字符串?无效的示例:

class Foo(object):
def __init__(self, x, y):
self.x = x
self.y = y
def __repr__(self):
return "Foo({})".format(**self.__dict__)

>>> foo = Foo(42, 66)
>>> print(foo)
IndexError: tuple index out of range

还有一个:

from pprint import pprint
class Foo(object):
def __init__(self, x, y):
self.x = x
self.y = y
def __repr__(self):
return "Foo({})".format(pprint(self.__dict__))

>>> foo = Foo(42, 66)
>>> print(foo)
{'x': 42, 'y': 66}
Foo(None)

是的,我可以将方法定义为

    def __repr__(self):
return "Foo({x={}, y={}})".format(self.x, self.x)

但是当有很多成员变量时,这会变得乏味。

最佳答案

当我想要类似的东西时,我将它用作混合:

class SimpleRepr(object):
"""A mixin implementing a simple __repr__."""
def __repr__(self):
return "<{klass} @{id:x} {attrs}>".format(
klass=self.__class__.__name__,
id=id(self) & 0xFFFFFF,
attrs=" ".join("{}={!r}".format(k, v) for k, v in self.__dict__.items()),
)

它给出类名、(缩写的)id 和所有属性。

关于Python __repr__ 用于所有成员变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44595218/

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