Форум сайта python.su
Написать класс, который регистрирует свои экземпляры и предоставляет интерфейс итератора по ним
1.
2. >>> x = Reg()
3. >>> x
4. <Reg instance at 0x98b6ecc>
5. >>> y = Reg()
6. >>> y
7. <Reg instance at 0x98b6fec>
8. >>> z = Reg()
9. <Reg instance at 0x98ba02c>
10. >>> for i in Reg:
11. … print i
12. <Reg instance at 0x98b6ecc>
13. <Reg instance at 0x98b6fec>
<Reg instance at 0x98ba02c>
Офлайн
class IterReg(type):
def __iter__(cls):
return iter(cls._instances)
class Reg(object):
_instances = []
__metaclass__ = IterReg
def __new__(cls, *args, **kwargs):
instance = super(Reg, cls).__new__(cls, *args, **kwargs)
cls._instances.append(instance)
return instance
r1 = Reg()
print r1
r2 = Reg()
print r2
print 'iterate:'
for i in Reg:
print i
Офлайн
plastunСпасибо за пример.class IterReg(type):
def __iter__(cls):
return iter(cls._instances)
class Reg(object):
_instances = []
__metaclass__ = IterReg
def __new__(cls, *args, **kwargs):
instance = super(Reg, cls).__new__(cls, *args, **kwargs)
cls._instances.append(instance)
return instance
r1 = Reg()
print r1
r2 = Reg()
print r2
print 'iterate:'
for i in Reg:
print i
Офлайн
Можно без. Например:
for i in Reg._instances:
print i
Офлайн
plastunок, спасибо.
Можно без. Например:Как еще - пока не знаю.for i in Reg._instances:
print i
Офлайн