remember the class from which they were madethoughthey will obtain the attributes we attached to the class by inheritancex namey name ('bob''bob'name is stored on the class only reallythese instances have no attributes of their ownthey simply fetch the name attribute from the class object where it is stored if we do assign an attribute to an instancethoughit creates (or changesthe attribute in that objectand no other--cruciallyattribute references kick off inheritance searchesbut attribute assignments affect only the objects in which the assignments are made herethis means that gets its own namebut still inherits the name attached to the class above itx name 'suerec namex namey name ('bob''sue''bob'but assignment changes only in factas we'll explore in more detail in the attributes of namespace object are usually implemented as dictionariesand class inheritance trees are (generally speakingjust dictionaries with links to other dictionaries if you know where to lookyou can see this explicitly for examplethe __dict__ attribute is the namespace dictionary for most class-based objects some classes may also (or insteaddefine attributes in __slots__an advanced and seldom-used feature that we'll note in but largely postpone until and normally__dict__ literally is an instance' attribute namespace to illustratethe following was run in python the order of names and set of __x__ internal names present can vary from release to releaseand we filter out builtins with generator expression as we've done beforebut the names we assigned are present in alllist(rec __dict__ keys()['age''__module__''__qualname__''__weakref__''name''__dict__''__doc__'list(name for name in rec __dict__ if not name startswith('__')['age''name'list( __dict__ keys()['name'list( __dict__ keys()list(not required in python [herethe class' namespace dictionary shows the name and age attributes we assigned to itx has its own nameand is still empty because of this modelan attribute can often be fetched by either dictionary indexing or attribute notationbut only if it' present on the object in question--attribute notation kicks off inheritance searchbut indexing looks in the single object only (as we'll see laterboth have valid roles) namex __dict__['name'('sue''sue' class coding basics attributes present here are dict keys