@@ -77,8 +77,8 @@ class NDFrame(PandasObject):
7777 axes : list
7878 copy : boolean, default False
7979 """
80- _internal_names = ['_data' , 'name' , ' _cacher' , 'is_copy ' , '_subtyp ' ,
81- '_index' , '_default_kind' , '_default_fill_value' ]
80+ _internal_names = ['_data' , '_cacher' , '_item_cache ' , '_cache ' ,
81+ 'is_copy' , '_subtyp' , ' _index' , '_default_kind' , '_default_fill_value' ]
8282 _internal_names_set = set (_internal_names )
8383 _metadata = []
8484 is_copy = None
@@ -721,13 +721,14 @@ def __setstate__(self, state):
721721 # to avoid definitional recursion
722722 # e.g. say fill_value needing _data to be
723723 # defined
724- for k in self ._internal_names_set :
724+ meta = set (self ._internal_names + self ._metadata )
725+ for k in list (meta ):
725726 if k in state :
726727 v = state [k ]
727728 object .__setattr__ (self , k , v )
728729
729730 for k , v in state .items ():
730- if k not in self . _internal_names_set :
731+ if k not in meta :
731732 object .__setattr__ (self , k , v )
732733
733734 else :
@@ -1607,16 +1608,23 @@ def __getattr__(self, name):
16071608
16081609 This allows simpler access to columns for interactive use.
16091610 """
1610- if name in self ._info_axis :
1611- return self [name ]
1612- raise AttributeError ("'%s' object has no attribute '%s'" %
1613- (type (self ).__name__ , name ))
1611+ if name in self ._internal_names_set :
1612+ return object .__getattribute__ (self , name )
1613+ elif name in self ._metadata :
1614+ return object .__getattribute__ (self , name )
1615+ else :
1616+ if name in self ._info_axis :
1617+ return self [name ]
1618+ raise AttributeError ("'%s' object has no attribute '%s'" %
1619+ (type (self ).__name__ , name ))
16141620
16151621 def __setattr__ (self , name , value ):
16161622 """After regular attribute access, try looking up the name of the info
16171623 This allows simpler access to columns for interactive use."""
16181624 if name in self ._internal_names_set :
16191625 object .__setattr__ (self , name , value )
1626+ elif name in self ._metadata :
1627+ return object .__setattr__ (self , name , value )
16201628 else :
16211629 try :
16221630 existing = getattr (self , name )
0 commit comments