Итерация по экземплярам объектов данного класса в Python

Способ, которым я достиг этого, был следующим образом

<ReferenceInput label="Country" source='country.id' reference="Country"  sort={{ field: 'name', order: 'ASC' }} alwaysOn>
   <SelectInput optionText="name" optionValue="id" allowEmpty />
</ReferenceInput>

Мне нужно было загрузить свой выбор из этой базы данных, хотя, однако, концепция та же самая ... я подозреваю, что вы используете для источника неправильно .. Посмотрите в инструментах редукционного устройства .. в состоянии -> форма -> запись-форма -> значения, и вы должны увидеть что-то вроде status.id, который вы должны использовать вместо источника .. У меня есть тот же тип объекта в моей форме страны {id: 2} ... но это не то, что вы используете, чтобы получить ввод, чтобы показать ваше существующее значение ...

Ваше решение может быть таким же простым, как вызов значения diff в источнике, но вы будете знать, что это должно быть, посмотрев в состояние {status: 0} должен иметь что-то перед ним в состоянии, например что-то -> {status: 0}

16
задан Matthew Schinckel 11 April 2009 в 11:58
поделиться

3 ответа

You can make your class object iterable with a simple metaclass.

class IterRegistry(type):
    def __iter__(cls):
        return iter(cls._registry)

class Person(object):
    __metaclass__ = IterRegistry
    _registry = []

    def __init__(self, name):
        self._registry.append(self)
        self.name = name

(I have also changed __registry to _registry to make it easier to access from the metaclass). Затем

>>> p = Person('John')
>>> p2 = Person('Mary')
>>> for personobject in Person:
...     print personobject
...
<person.Person object at 0x70410>
<person.Person object at 0x70250>
24
ответ дан 30 November 2019 в 16:42
поделиться

Во-первых, не используйте двойные __ имена. Они зарезервированы для использования Python. Если вы хотите, чтобы «личное» использовало single _ .

Во-вторых, сделайте все как можно проще. Не тратьте много времени и сил на что-то сложное. Это простая проблема, сделайте код максимально простым, чтобы выполнить работу.

class Person(object):
    _registry = []

    def __init__(self, name):
        self._registry.append(self)
        self.name = name

for p in Person._registry:
    print p
11
ответ дан 30 November 2019 в 16:42
поделиться

you can do it with:

for item in Person.__registry:
    print(item)
2
ответ дан 30 November 2019 в 16:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: