mirror of https://github.com/scrapy/scrapy.git
don't allow setting attributes that aren't fields, and return field default values on newitem
--HG-- extra : convert_revision : svn%3Ab85faa78-f9eb-468e-a121-7cced6da292c%40875
This commit is contained in:
parent
d95878c0f7
commit
1017f12163
|
|
@ -11,14 +11,16 @@ class Item(object):
|
|||
self._fields = self._get_fields()
|
||||
|
||||
def _get_fields(self):
|
||||
return dict(i for i in self.__class__.__dict__.iteritems() if
|
||||
isinstance(i[1], ItemField))
|
||||
return dict(i for i in self.__class__.__dict__.iteritems() \
|
||||
if isinstance(i[1], ItemField))
|
||||
|
||||
def __setattr__(self, name, value):
|
||||
if not name.startswith('_') and name in self._fields.keys():
|
||||
self._values[name] = self._fields[name].to_python(value)
|
||||
if not name.startswith('_'):
|
||||
if name in self._fields.keys():
|
||||
self._values[name] = self._fields[name].to_python(value)
|
||||
else:
|
||||
raise AttributeError(name)
|
||||
else:
|
||||
# for now setting values that are not fields is permitted
|
||||
object.__setattr__(self, name, value)
|
||||
|
||||
def __getattribute__(self, name):
|
||||
|
|
@ -26,10 +28,7 @@ class Item(object):
|
|||
try:
|
||||
return self._values[name]
|
||||
except KeyError:
|
||||
# what to to in this case?
|
||||
# maybe return a default value:
|
||||
# return self._fields[name].default_value()
|
||||
return None
|
||||
return self._fields[name].default_value()
|
||||
else:
|
||||
return object.__getattribute__(self, name)
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue