Add a solution

This commit is contained in:
wpj
2022-10-08 18:02:27 +08:00
parent 69741bc6f3
commit 0dbf9283f2
2 changed files with 29 additions and 0 deletions
@@ -0,0 +1,29 @@
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()