Dưới đây, base_id
và _id
là biến lớp và được chia sẻ giữa tất cả các lớp con.
Có cách nào để tách chúng thành từng lớp không?ghi đè biến lớp trong 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ó lý do cụ thể nào khiến bạn muốn hàng trăm chữ số đại diện cho lớp không? Còn nếu bạn nhận được hơn 100 trường hợp? Sau đó, bạn sẽ có chồng lên nhau. Bạn sẽ thấy ID ở đâu và có cách nào tốt hơn để phân biệt giữa các lớp so với sử dụng ID? (Có lẽ bạn có thể hiển thị một số thông tin bổ sung, ví dụ.) – jpmc26
Điều đó không thực sự quan trọng ở đây; ngay cả khi eugene đã thay đổi ID thành 2-tuple (ví dụ: (1,0), (1,1), (1,2) ... cho 'Child1') thì vấn đề tạo bộ đếm độc lập vẫn còn. –