Python将生成的Classe对象存储到数组中

时间:2015-10-02 12:37:26

标签: python arrays class object

我目前正致力于生成一堆类对象并将它们存储在数组中并执行类函数而无需遍历每个类。我提出这个问题的背景与我正在做的事情不完全相同,但它太复杂而无法解释问题

假设我的信息存储在这样的数组中:

x = [['dog', 1], ['cat',2]]

该课程将如下所示:

class Animal(object):
    def __init__(self, name, position):
        self.name = name
        self.position = position

    def display(self):
        print(self.name, self.position)

所以我的目标是从数组中获取信息并将它们作为对象存储到空数组中。这样做的原因是能够从所有对象调用一个函数,而不必为每个对象重复它而不进行迭代。

我的问题是我将它们附加到列表中,但该对象没有附加变量名称。有没有办法让变量名value[0]成为x中包含的名称。

empty = []

for value in x:
    empty.append(Animal(value[0], value[1]))

然后,一旦存储正确以执行它们,以下代码是否有效?

for item in empty:
item.display()

我知道你不应该使用它来打印这些值,但是我把它放在这个场景中,以便简化如何处理类。

3 个答案:

答案 0 :(得分:0)

是。它会起作用(给出适当的缩进)。

顺便说一下。获得答案的最简单方法就是运行代码: - )

答案 1 :(得分:0)

您的代码运行正常,但也许您正在寻找Apple

文件observer.py

class Animal:
    def __init__(self, name, position):
        self.name = name
        self.position = position
    def update(self, message):
        print('{} at {} got message "{}"'.format(self.name, self.position, message))

class Publisher:
    def __init__(self):
        self.subscribers = set()
    def register(self, who):
        self.subscribers.add(who)
    def unregister(self, who):
        self.subscribers.discard(who)
    def dispatch(self, message):
        for subscriber in self.subscribers:
            subscriber.update(message)

文件driver_observer.py

from observer import Publisher, Animal

pub = Publisher()

dog = Animal('dog', 1)
cat = Animal('cat', 2)

pub.register(dog)
pub.register(cat)

pub.dispatch("something")

pub.unregister(dog)

pub.dispatch("another thing")

执行driver_observer.py时:

dog at 1 got message "something"
cat at 2 got message "something"
cat at 2 got message "another thing"

Observer Pattern

答案 2 :(得分:-2)

使用__dict__获取字段和值

id date

在您的对象上获取您的字段和值的字典

dog = Animal('dog', 1)
dict_to_store = dog.__dict__