Sotto, base_id
e _id
è una variabile di classe e condivisa tra tutte le classi figlio.
C'è un modo per separarli in ogni classe?sostituisce la variabile di classe in python?
from itertools import count
class Parent(object):
base_id = 0
_id = count(0)
def __init__(self):
self.id = self.base_id + self._id.next()
class Child1(Parent):
base_id = 100
def __init__(self):
Parent.__init__(self)
print 'Child1:', self.id
class Child2(Parent):
base_id = 200
def __init__(self):
Parent.__init__(self)
print 'Child2:', self.id
c1 = Child1() # 100
c2 = Child2() # 201 <- want this to be 200
c1 = Child1() # 102 <- want this to be 101
c2 = Child2() # 203 <- want this to be 201
C'è qualche motivo particolare per cui si desidera che le centinaia di cifre rappresentino la classe? Che dire se ottieni più di 100 istanze? Quindi avrai sovrapposizioni. Dove vedrai l'ID e potrebbe esserci un modo migliore per distinguere le classi dall'usare l'ID? (Forse potresti visualizzare alcune informazioni extra, per esempio.) – jpmc26
Questo non importa in questo caso; anche se eugene ha cambiato ID in tuple di 2 (ad esempio (1,0), (1,1), (1,2) ... per 'Child1') rimane il problema di creare contatori indipendenti. –