Simplify 'obj' property definition in PyobjMixin

This uses modern property definition syntax, declaring both getter
and setter as obj() functions
This commit is contained in:
Bruno Oliveira 2019-03-07 08:08:21 -03:00
parent 236bada755
commit 0f4905a259
1 changed files with 15 additions and 16 deletions

View File

@ -243,25 +243,24 @@ class PyobjMixin(PyobjContext):
def __init__(self, *k, **kw):
super(PyobjMixin, self).__init__(*k, **kw)
def obj():
def fget(self):
obj = getattr(self, "_obj", None)
if obj is None:
self._obj = obj = self._getobj()
# XXX evil hack
# used to avoid Instance collector marker duplication
if self._ALLOW_MARKERS:
self.own_markers.extend(get_unpacked_marks(self.obj))
return obj
@property
def obj(self):
"""underlying python object"""
obj = getattr(self, "_obj", None)
if obj is None:
self._obj = obj = self._getobj()
# XXX evil hack
# used to avoid Instance collector marker duplication
if self._ALLOW_MARKERS:
self.own_markers.extend(get_unpacked_marks(self.obj))
return obj
def fset(self, value):
self._obj = value
return property(fget, fset, None, "underlying python object")
obj = obj()
@obj.setter
def obj(self, value):
self._obj = value
def _getobj(self):
"""Gets the underlying python object. May be overwritten by subclasses."""
return getattr(self.parent.obj, self.name)
def getmodpath(self, stopatmodule=True, includemodule=False):