Нет встроенного способа ссылаться на все созданные экземпляры определенного класса.API, которые позволяют вам делать это, должны реализовывать это поведение.К счастью, вы можете очень просто воспроизвести это поведение с помощью переменной класса:
class ChannelMessages:
all_messages = []
def __init__(self, channel, date, message):
self.channel = channel
self.date = date
self.message = message
all_messages.append(self)
Список all_messages
теперь содержит ссылку на все экземпляры объекта своего класса, к которым, как и ко всем переменным класса, вы можете получить доступ либочерез сам класс (ChannelMessage.all_messages
) или через любой конкретный экземпляр класса (self.all_messages
).
Более элегантным решением было бы использование метаклассов и реализация __iter__
для самого класса, чтобы вы моглинапишите for message in ChannelMessages
, но с практической точки зрения это работает так же хорошо.