slapos/recipe/librecipe/generic.py: GenericBaseRecipe's _ws is a lazy attribute now.
getWorkingSet() is slow and it is not always needed. So, it is better not to call it in __init__.
Showing
-
Owner
Beware of
__
magic:>>> class Foo(object): ... def foo(self): ... if getattr(self, '__bar', None) is None: ... print 'miss' ... self.__bar = 1 ... else: ... print 'hit' ... >>> a = Foo() >>> a.foo() miss # As expected >>> a.foo() miss # Not expected ! >>> a.__dict__ {'_Foo__bar': 1} >>> setattr(a, '__bar', 2) >>> a.__dict__ {'__bar': 2, '_Foo__bar': 1} >>> a.foo() hit # And here it is, but we have two property with apparently the same name now, and depending on how they are accessed, one or the other will be returned.
IOW, in a class,
a.__b
!=getattr(a, '__b')
.The same code ran outside of a class would work though:
>>> b = Foo() >>> b.__bar = 1 >>> b.foo() hit >>> b.__dict__ {'__bar': 1}
-
Owner
Thank you. I fixed it.
Please register or sign in to comment