gpt4 book ai didi

Python3 OOP : Select all objects of a particular class w/o variables

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

我有简单的类(class):

class ChannelMessages:
def __init__(self, channel, date, message):
self.channel = channel
self.date = date
self.message = message

... somecode here ...

for message in messages:
ChannelMessages(name, message.to_dict()['date'], message.to_dict()['message'])


... name, date, message - is a variables ...

我现在想选择所有 ChannelMessages 类对象并将其放入一个变量中。我不需要将它保存在任何地方,我需要在我的应用程序上渲染一次这个类。

我正在尝试使用类似 Django ORM 的东西:

ChannelMessages.objects.all()

但我不能这样选择它们。那么有没有办法选择所有没有变量的创建对象?或者我总是应该为每个创建的类对象指定变量?

最佳答案

没有内置的方法来引用特定类的所有已创建实例。使您能够执行此操作的 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 list 现在持有对其类的所有实例化对象的引用,与所有类变量一样,您可以通过类本身 (ChannelMessage.all_messages) 或通过类的任何特定实例 (self.all_messages) 访问。

一个更优雅的解决方案是使用元类并实现 __iter__对于类(class)本身,所以你可以写for message in ChannelMessages ,但从实际的角度来看,这同样有效。

关于Python3 OOP : Select all objects of a particular class w/o variables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55453724/

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