【发布时间】:2020-12-26 02:44:09
【问题描述】:
我想知道如何为具有__slots__ 的类实现__repr__ 方法。据我了解__repr__,它应该返回一个字符串,该字符串可用于构造我们称为__repr__ 的对象。换句话说,将repr(object) 提供给Python 解释器应该构造object。
但是,如果有一个类有__slots__,我很难想象如何实现它。这是因为在使用__slots__ 时,插槽中的某些属性可能已初始化并具有值,而其他属性可能不会。那么如何确定哪些属性已初始化以及将它们传递给__repr__ 字符串的值呢?
此类的最小示例:
class TestClass:
__slots__ = 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', '__dict__'
def __init__(self, something, something_else, **kwargs):
self.something = something
self.something_else = something_else
for key, value in kwargs.items():
setattr(self, key, value)
def __repr__(self):
return '%s(%r, %r)' %(self.__class__.__name__, self.something, self.something_else)
有什么建议吗?
【问题讨论】: