Как оптимизировать обход экземпляров в методах класса?

#python #class #methods #instance

Вопрос:

Я проверил адрес памяти dict instance каждого экземпляра, указывая на один и тот же адрес, поэтому удобнее использовать class instance его для хранения соответствующего имени экземпляра.

Это то, чего я действительно хотел.

 class MyClass:
    lens = range(10)
    instance = {}

    def __init__(self, order):
        self.order = order

    @classmethod
    def cycle(cls):
        for i in cls.lens:
            print(cls.instance[i].order)

    @classmethod
    def cls_init(cls):
        for i in cls.lens:
            cls.instance[i] = cls(i)


MyClass.cls_init()
MyClass.cycle()
 

У меня есть класс MyClass , и я создал 10 экземпляров. Я хочу просмотреть экземпляры в class method . Код выглядит следующим образом.

Существует ли более оптимизированный метод?

 instance = {}


class MyClass:
    instances = range(10)

    def __init__(self, order):
        self.order = order

    @classmethod
    def cycle(cls):
        for i in cls.instances:
            print(instance[i].order)


for i in MyClass.instances:
    instance[i] = MyClass(i)

MyClass.cycle()
 

Результат:

 0
1
2
3
4
5
6
7
8
9
 

Комментарии:

1. Я не уверен, что понимаю

2. @U12-Вперед Я отредактировал свой вопрос.

3. Как более оптимизировано?

4. @RobbyCornelissen Может ли это быть более оптимизировано?

5. Что это значит, более оптимизировано? Быстрее? Меньше использования памяти? Меньше строк кода?

Ответ №1:

Просто используйте map :

 instance = dict(zip(MyClass.instances, map(MyClass, MyClass.instances)))
MyClass.cycle()
 

Выход:

 0
1
2
3
4
5
6
7
8
9
 

Комментарии:

1. Переменная instance , которая мне нужна, — это dict, что мне делать?

2. @jaried Отредактировал мой