Aşağıda, base_id
ve _id
bir sınıf değişkeni olup, tüm alt sınıflar arasında paylaşılır.
Onları her bir sınıfa ayırmanın bir yolu var mı? Söz konusu söylediği gibipython'da sınıf değişkenini geçersiz kılar mı?
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
Yüzlerce hane sınıfını temsil etmenin neden özel bir sebebi var? 100'den fazla örneğe sahip olursanız ne olur? Öyleyse üst üste geleceksin. Kimliği nerede göreceksiniz ve sınıfları birbirinden ayırmak için ID'yi kullanmanın daha iyi bir yolu olabilir mi? (Belki de bazı ekstra bilgileri görüntüleyebilirsiniz.) – jpmc26
Bu aslında önemli değil; eugene ID'leri 2-tuple değiştirmiş olsa bile (örn. (Child) 1 için (1,0), (1,1), (1,2) ...) bağımsız sayaç oluşturma problemi kalır. –