#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 Отредактировал мой