Найти - Пользователи
Полная версия: Как пройтись по объектам определенного класса?
Начало » Python для новичков » Как пройтись по объектам определенного класса?
1
xmarat
Всем добрый вечер. Как можно пройтись по объектам(для чтения, изменения параметров, вызова методов) определенного класса? Заранее благодарен за ответы.
fata1ex
Хранить все инстансы класса где-нибудь. Например, создавать объекты с помощью менеджера, который будет добавлять их к себе в список и выводить этот список при вызове соответствующего метода. (Или просто в самом классе).

Ну и ставшая уже традиционной рубрика "Поиск в интернете для лентяев программистов" - Google: ‘get class instances python’ / ‘get instances of class python’ дают ответы в первых же ссылках. Например, грубый способ:

import gc
for obj in gc.get_objects():
    if isinstance(obj, some_class):
        dome_something(obj)
buddha
можно еще через стандартный атрибут так:
for i in spisok: #список экземпляров любых классов
    if i.__class__==Class1:
        [y for y in i.__dict__]

fata1ex
Во-первых, для i.__class__ == Class1 есть isinstance(i, Class1). Во-вторых, вопрос был в том, откуда взять список.

PS. Интересная конструкция )
[y for y in i.__dict__]
Для этого есть dict.keys(). Хотя не очень понятно к чему тут этот список вообще.

Нельзя в ночи такие вопросы задавать :) Вот что из этого выходит
>>> class A(object):
...     pass
>>> a, b = A(), A()
>>> filter(lambda obj: isinstance(obj, A), map(eval, dir()))
[<__main__.A object at 0xa2699ec>, <__main__.A object at 0xa26994c>]
Иногда подойдёт и такой вариант.
buddha
Чем больше вариантов прочувствуешь, тем гибче,на мой взгляд, можно решать какие-либо задачи. Программирование-это ж творчество, нет? -)

to xmarat, ты бы написал свой пример, куда лучше на конкретике.
fata1ex
buddha, больше вариантов, не значит лучше. Больше хороших вариантов - лучше. А вы пишете нечто, не соответствующую ни pep8, ни вопросу :) Футбольный комментатор во мне говорит нечто стандатное вроде “по мысли хорошо, но исполнение подвело”.

А вообще пора спать идти.
buddha
Да, хоспаде. К чему это всё-хорошо , плохо. Время все по своим местам расставит.
Soteric
“iexx:
блин, вот за что люблю программирование, так это за то, что одно и тоже можно сделать десятью разными способами.

Obormotik:
и за 8 из них получить …..лей от вышестоящих прогеров”

http://bash.im/quote/404335 :)
xmarat
Честно, перед тем как задать вопрос, искал ответ в гугле, но так и не нашел. Наверно потому что искал на русскоязычных сайтах. Вопрос решился данным методом:
import gc
for obj in gc.get_objects():
    if isinstance(obj, some_class):
        dome_something(obj)

Всем спасибо за ответы.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB