traitlets
traitlets copied to clipboard
Confused about self.parent
Hello, I am making heavy use of self.parent in some code I wrote, but:
- searching the docs does not define
parent - searching the repo for
def parentdoes not yield any results - There are a number of red herrings in the search to understand what
self.parentdoes and where it is documented because of toy examples in the issues and the docs where we haveclass ChildandClass Parentwhere theChildclass has a slot accessed viaself.parent... this is not theself.parentthat is being heavily used in my Traitlets-based applications... but for the life of me, I cannot remember why I started using it and what the semantics are.
Actually I think I found it : it's defined as "The parent Configurable instance of this object." ... ah I think I know the purpose of this... it's to get at the Application class that is the parent of the Configurable class so that you can access slots within the Application... is that correct?
From my understanding, parent is not necessarily the root application instance. Tartlets allows configurables to be arbitrarily nested. Consider the following
cfg = Config(...)
c1 = Class1(config=cfg)
c2 = Class2(parent=c1)
c3 = Class3(parent=c1)
assert c3.parent.parent == c1
From Traitlets' internal perspective, the purpose is to allow thecfg to be passed down from the outer-most configurable to any inner configurables so they can be properly initialized. From the perspective of users, this does given you the ability to traverse these parent references to find that outer-most configurable.