inheritance - unexpected references to same object in different instances (python) -
some code have problem with:
# connector class conn(): def __init__(self, name): self.name = name # device base class class imper_dev(): names = [] conns = {} def __init__(self): name in self.names: self.conns[name] = conn(name) # real device class dev(imper_dev): names = ['a'] # instances of d1 = dev() d2 = dev() >>> d1.conns['a'] <__main__.conn object @ 0x7fd68871c630> >>> d2.conns['a'] <__main__.conn object @ 0x7fd68871c630>
i little surprised behavior. intention create instances of dev()
independent connectors. why have both instances d1
, d2
same reference conns['a']
?
conns
class variable means variable shared between instances of dev
class. note d1
, d2
different objects, it's conns
, names
shared here.
>>> d1 <__main__.dev instance @ 0x7fb757329050> >>> d2 <__main__.dev instance @ 0x7fb7573290e0>
Comments
Post a Comment