@@ -77,8 +77,8 @@ class NDFrame(PandasObject):
77
77
axes : list
78
78
copy : boolean, default False
79
79
"""
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' ]
82
82
_internal_names_set = set (_internal_names )
83
83
_metadata = []
84
84
is_copy = None
@@ -721,13 +721,14 @@ def __setstate__(self, state):
721
721
# to avoid definitional recursion
722
722
# e.g. say fill_value needing _data to be
723
723
# defined
724
- for k in self ._internal_names_set :
724
+ meta = set (self ._internal_names + self ._metadata )
725
+ for k in list (meta ):
725
726
if k in state :
726
727
v = state [k ]
727
728
object .__setattr__ (self , k , v )
728
729
729
730
for k , v in state .items ():
730
- if k not in self . _internal_names_set :
731
+ if k not in meta :
731
732
object .__setattr__ (self , k , v )
732
733
733
734
else :
@@ -1607,16 +1608,23 @@ def __getattr__(self, name):
1607
1608
1608
1609
This allows simpler access to columns for interactive use.
1609
1610
"""
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 ))
1614
1620
1615
1621
def __setattr__ (self , name , value ):
1616
1622
"""After regular attribute access, try looking up the name of the info
1617
1623
This allows simpler access to columns for interactive use."""
1618
1624
if name in self ._internal_names_set :
1619
1625
object .__setattr__ (self , name , value )
1626
+ elif name in self ._metadata :
1627
+ return object .__setattr__ (self , name , value )
1620
1628
else :
1621
1629
try :
1622
1630
existing = getattr (self , name )
0 commit comments