30 lines
485 B
Python
30 lines
485 B
Python
class Borg:
|
|
|
|
def __new__(cls):
|
|
if not hasattr(cls, '_state'):
|
|
cls._state = {}
|
|
instance = super(Borg, cls).__new__(cls)
|
|
instance.__dict__ = cls._state
|
|
return instance
|
|
|
|
|
|
class SubBorg(Borg):
|
|
pass
|
|
|
|
|
|
class SubBorg2(Borg):
|
|
pass
|
|
|
|
|
|
def main():
|
|
a = SubBorg()
|
|
b = SubBorg()
|
|
c = SubBorg2()
|
|
a.attr = 10
|
|
assert hasattr(b, 'attr') and b.attr == 10
|
|
assert not hasattr(c, 'attr')
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|